The reliable execution of mobile agents is a very important design issue in building mobile agent systems and many fault-tolerant schemes have been proposed so far. Security is a major problem of mobile agent systems, especially when monetary transactions are concerned. Security for the partners involved is handled by encryption methods based on a public key authentication mechanism and by secret key encryption of the communication. To achieve fault tolerance for the agent system, especially for the agent transfer to a new host, we use distributed transaction processing. We propose a fault-tolerant approach for mobile agents design which offers a user transparent fault tolerance that can be activated on request, according to the needs of the task. We also discuss how transactional agents with different types of commitment constraints can commit transactions. Furthermore, we present a solution for effective agent deployment using dynamic agent domains.