In migrating there are 3 things you need to consider:
- process state
- process registered name aka how do other processes still contact it
- messages in queue
Process state
You can place the state into a struct or map and have the new SM start_link with this state this would solve this issue.
Registered name
Either use global or have an internal name/process resolver to ensure current processes can still access the migrated SM.
Message in queue
This is a bit trickier. Before migrating you will have to dequeue the messages into a list and provide it to the new SM.
This is a common trick to always dequeue messages into an ets table and process off the table. This trick is typically uses for high transaction processes or for message reordering.






















