transferShifts(persistentObject, sp, getShifts(sp, originExecutionCourse), shiftIdsToTransfer, transferedStudents, destinationExecutionCourse);
fixStudentShiftEnrolements(originExecutionCourse); fixStudentShiftEnrolements(destinationExecutionCourse);
    public void run(final Integer originExecutionCourseOid, final Integer destinationExecutionCourseId,            final Integer[] shiftIdsToTransfer, final Integer[] curricularCourseIdsToTransfer)            throws ExcepcaoPersistencia {        final ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();        final IPersistentObject persistentObject = sp.getIPersistentObject();        final IExecutionCourse originExecutionCourse = (IExecutionCourse) persistentObject.readByOID(                ExecutionCourse.class, originExecutionCourseOid);        IExecutionCourse destinationExecutionCourse = (IExecutionCourse) persistentObject.readByOID(                ExecutionCourse.class, destinationExecutionCourseId);        if (destinationExecutionCourse == null) {            destinationExecutionCourse = createNewExecutionCourse(persistentObject,                    originExecutionCourse);            createNewSite(destinationExecutionCourse);            ExecutionCourseUtils.copyBibliographicReference(originExecutionCourse, destinationExecutionCourse);            ExecutionCourseUtils.copyEvaluationMethod(originExecutionCourse, destinationExecutionCourse);                   }        final Collection curricularCoursesToTransfer = getCurricularCoursesToTransfer(                curricularCourseIdsToTransfer, originExecutionCourse.getAssociatedCurricularCourses());        persistentObject.simpleLockWrite(originExecutionCourse);        persistentObject.simpleLockWrite(destinationExecutionCourse);        final Collection transferedStudents = transferAttends(persistentObject,                curricularCourseIdsToTransfer, originExecutionCourse.getAttends(),                destinationExecutionCourse);        transferShifts(persistentObject, sp, getShifts(sp, originExecutionCourse), shiftIdsToTransfer,                transferedStudents, destinationExecutionCourse);        originExecutionCourse.getAssociatedCurricularCourses().removeAll(curricularCoursesToTransfer);        destinationExecutionCourse.getAssociatedCurricularCourses().addAll(curricularCoursesToTransfer);    }