public virtual void testMigrateGatewayWithTimerEvent()
        {
            // given
            var sourceProcessDefinition =
                testHelper.DeployAndGetDefinition(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS);
            var targetProcessDefinition =
                testHelper.DeployAndGetDefinition(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS);

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("eventBasedGateway", "eventBasedGateway")
                .Build();

            // when
            var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan);

            // then
            testHelper.AssertIntermediateTimerJobRemoved("timerCatch");
            testHelper.AssertIntermediateTimerJobCreated("timerCatch");

            var timerJob = testHelper.SnapshotAfterMigration.Jobs[0];

            rule.ManagementService.ExecuteJob(timerJob.Id);

            testHelper.CompleteTask("afterTimerCatch");
            testHelper.AssertProcessEnded(processInstance.Id);
        }