I'm using a simple Workflow for demonstration purposes:

Init sets State1. State 1 waits for item changed and set's state 2. State 2 waits for item change and finishes the workflow.
The problem: When running this workflow and changing the item, the Workflow runs right through to the Completed state, it doesn't stop at Step 2 (stateActivity2).
I read that the onWorkflowItemChanged activity needs the Workflow correlation token to work. I have made an adjustment as in to create a new correlation token per state (via InitializeWorkflow) and use that correlation token in each state. This way the workflow "stops" in each state, but is this the correct way to go about things?
All I want is for the state machine workflow to wait for item changes and upon that (and some code) continue to the next state.
Basically my question is: How to use a onWorkflowItemChanged in a State Machine Workflow?
Edit:
Tried to use the
CallExternalMethod / HandleExternalEvent approach (see comment below or here: Capturing OnItemChanged) - to no avail, Events are just not being called at all - one should be able to use the OnWorkflowItemChanged activity what else is it for?Just to add: I verified exactly this behavior on a totally different SP2010 system - my approach as shown in the image must be wrong, but (here comes the kicker) it works in SP2007 (multiple states with a
OnWorkflowActivated activity each)