typically this is something that would be done in the postscript of a Workflow approval. here is an example code snippet of that case:
if(getApprovalStatus() != DENIED)
{
ContractDocumentIBeanIfc cDoc = (ContractDocumentIBeanIfc)doc;
ContractDocumentIBeanHomeIfc home = (ContractDocumentIBeanHomeIfc)IBeanHomeLocator.lookup(session, ContractDocumentIBeanHomeIfc.sHOME_NAME);
home.upgradeToEdit(cDoc);
home.changePhase(cDoc, "Revision");
}
note in this case this is hard coded to the phase named Revision. You would need to determine a means to set the appropriate phase.