You can't have boundry-events on a service-task (or at least, activiti can't cope with this). it only works on scopes (subprocess) and wait-state activities (usertaks, receive task). If the service-tasks throws a BPMNError, the subprocess-catching boundary-event will catch the error and cancel the whole subprocess, no need to declare a throwing event on the service-task, since you probably throw the BPMNError in code…