This document proposes a design for agent migration between distributed systems using ACL (Agent Communication Language) messages. It involves serializing an agent's code and state into an ACL message that is sent from one system to another. The receiving system deserializes the agent to restore its execution. The design includes defining an ontology for migration messages, a migration protocol specifying the message flow, and components for handling class loading, agent migration, and conversation protocols. The performance of this distributed agent migration approach is evaluated by applying it to a distributed prime number calculation application.