public void Initialize()
 {
     trace                            = A.Fake <ITracingService>();
     service                          = A.Fake <IOrganizationService>();
     entityMergeFactory               = A.Fake <IEntityMergeFactory>();
     pluginExecutionContext           = A.Fake <IPluginExecutionContext>();
     entityCacheMessageOutcomeService = new EntityCacheMessageOutcomeService(trace, service, entityMergeFactory);
     entityMerge                      = A.Fake <EntityMerge>();
 }
        protected override void Execute(CodeActivityContext executionContext)
        {
            ITracingService             trace          = executionContext.GetExtension <ITracingService>();
            IWorkflowContext            context        = executionContext.GetExtension <IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                EntityReference entityMerge = EntityMerge.Get <EntityReference>(executionContext);
                (new MergeCustomerService()).MergeCustomers(
                    EntityMerge.Get <EntityReference>(executionContext),
                    service,
                    trace);
            }
            catch (Exception ex)
            {
                trace.Trace("Exception in MergeCustomerActivity.Execute: {0}", ex.ToString());
                throw new InvalidPluginExecutionException(OperationStatus.Failed, ex.ToString());
            }
        }