Hi,
In general, you need to signal sub process execution using its id instead of signaling main process. Unfortunately there is no API way to get hold of sub process instance but you can do this casting to ExecutionImpl:
((ExecutionImpl)processInstance).getSubProcessInstance()
Then use this process instance when signaling. You can find working example in attachment.
BTW, next time please attach your complete process definition with all custom classes (for custom activity, event listeners, etc) and a test case. Will make it easier and faster for others to look into your case.
P.S.
Will create issue in jira to provide a way to get hold of sub process instance.
HTH
Maciej