Disclosed is a rollback-free method for performing multi-step procedures
in the presence of possible failure. As the procedure proceeds from its
initial state through transitions to its final state, its constituent
transitions are monitored for failure. If a failure is detected, then the
procedure is "sidetracked" into a recovery coordination state. From the
recovery coordination state, the procedure is logically taken back to its
initial state and retried. In this manner, the procedure is shepherded,
without rollbacks, through its transitions until it successfully reaches
its final state. In a particular embodiment, a multi-step procedure is
developed for moving a resource from one resource server to another. The
steps of the procedure are designed so that all throughout the procedure,
both of the resource servers and a directory server are kept
synchronized. This allows client requests to proceed without interruption
even during the resource movement.