Ignoring Cars for a moment - Sorry. This might be boring
I'm a semi retired software developer. In computer databases we have a thing called 'ACID Compliance'. This is where when two sides of a transaction commit to a new value and if either side fails to commit (ie fail to accept the new value) then both sides fall back to their last known value. Imagine if you sent money to a bank remote account and the network crashed half way through the transaction and the money was reduced from your bank balance but not increased in the recipient's account. ACID Compliance dictates that the whole transaction is undone at both sides so the money isn't lost.
Now back to cars. The EWS and DME are, in effect, two sides of a transaction. They have an ID that changes frequently. Each time it's used the number changes and is updated into both the EWS and the DME so the security 'key' is held in two places. The idea being if a car thief plugged his own hacked EWS and his own key coil into your car that would allow the car to start but the DME would notice, a moment later, that the rolling numbers don't match and cut the fuel/spark before the robber gets half way down your drive.
But the problem is the system is not "ACID compliant" in the same way that computer database are (or should be). So, in the Z3, it is possible for one half of the system (ie the DME vs EWS) to update it's rolling number but because of a duff battery or crashed K-Line the other half doesn't get the new rolling number. They are now out of sync. The car will start but 3 seconds later the DME will cut off fuel/spark.
Not saying that is Matt's problem but it 'could be'.
Sorry. I told you it was boring.