@Override public void onReceive(Object work) throws Exception { System.out.println("Starting multi step work on thread " + Thread.currentThread().getName()); WorkOrder nextStep = null; if (work instanceof WorkOrder) { // if(workOrder != null){ // Logger.error("Received second work order : " + work); // throw new IllegalStateException("Received second work order : " + work); // } customer = getSender(); workOrder = (WorkOrder) work; this.workOrderUuid = workOrder.getUuid(); // System.out.println("just set work order uuid : " + this.workOrderUuid); // System.out.println("Performing work : " + workOrder.getWorkType()); nextStep = processWorkOrder(workOrder); if (nextStep != null) { Asyncleton.getInstance().getMaster(nextStep.getWorkType()).tell(nextStep, customer); } } else if (work instanceof WorkResult) { WorkResult workResult = (WorkResult) work; processWorkResult(workResult); // doNextStep(); } else { Logger.error("got unknown work in Multi Step worker : " + work); } }