protected WorkflowSubscription GetCurrentWebWorkflowSubscriptioBySourceId( object host, ClientContext hostclientContext, Web web, Guid eventSourceId, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { var context = web.Context; var workflowServiceManager = new WorkflowServicesManager(hostclientContext, web); context.Load(web); context.Load(web); context.ExecuteQueryWithTrace(); hostclientContext.Load(workflowServiceManager); hostclientContext.ExecuteQueryWithTrace(); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByEventSource(eventSourceId); hostclientContext.Load(subscriptions); hostclientContext.ExecuteQueryWithTrace(); return subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); }
protected WorkflowSubscription GetCurrentWebWorkflowSubscriptioBySourceId( object host, SPWeb web, Guid eventSourceId, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { var workflowServiceManager = new WorkflowServicesManager(web); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByEventSource(eventSourceId); return subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); }
protected WorkflowDefinition GetWorkflowDefinition(object host, SPWeb web, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Resolving workflow definition by DisplayName: [{0}]", workflowSubscriptionModel.WorkflowDisplayName); var workflowServiceManager = new WorkflowServicesManager(web); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); var result = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (result == null) { TraceService.ErrorFormat((int)LogEventId.ModelProvisionCoreCall, "Cannot find workflow definition with DisplayName: [{0}]. Provision might break.", workflowSubscriptionModel.WorkflowDisplayName); } return result; }
private void ValidateWorkflowSubscription(object modelHost, SPWeb web, WorkflowSubscription spObject, SP2013WorkflowSubscriptionDefinition definition) { #region list accos var assert = ServiceFactory.AssertService .NewAssert(definition, spObject) .ShouldNotBeNull(spObject) .ShouldBeEqual(m => m.Name, o => o.Name); // [FALSE] - [WorkflowDisplayName] <!- check DefinitionId, load workflow // [FALSE] - [HistoryListUrl] // [FALSE] - [TaskListUrl] // [FALSE] - [EventSourceId] // [FALSE] - [EventTypes] #region event types assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.EventTypes); var hasAllEventTypes = true; foreach (var srcEventType in s.EventTypes) if (!d.EventTypes.Contains(srcEventType)) hasAllEventTypes = false; return new PropertyValidationResult { Tag = p.Tag, Src = srcProp, IsValid = hasAllEventTypes }; }); #endregion #region validate DefinitionId var workflowDefinition = GetWorkflowDefinition(modelHost, web, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.WorkflowDisplayName); return new PropertyValidationResult { Tag = p.Tag, Src = srcProp, IsValid = d.DefinitionId == workflowDefinition.Id }; }); #endregion #region validate task and history list var taskListId = new Guid(spObject.PropertyDefinitions["TaskListId"]); var historyListId = new Guid(spObject.PropertyDefinitions["HistoryListId"]); var lists = web.Lists; var srcTaskList = lists.OfType<SPList>().FirstOrDefault(l => l.ID == taskListId); var srcHistoryList = lists.OfType<SPList>().FirstOrDefault(l => l.ID == historyListId); var dstTaskList = GetTaskList(web, definition); var dstHistoryList = GetHistoryList(web, definition); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.TaskListUrl); return new PropertyValidationResult { Tag = p.Tag, Src = srcProp, IsValid = srcTaskList.ID == dstTaskList.ID }; }); assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(m => m.HistoryListUrl); return new PropertyValidationResult { Tag = p.Tag, Src = srcProp, IsValid = srcHistoryList.ID == dstHistoryList.ID }; }); #endregion #endregion }
private void DeployWebWorkflowSubscriptionDefinition( object host, SPWeb web, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { var workflowServiceManager = new WorkflowServicesManager(web); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); var currentWorkflowDefinition = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (currentWorkflowDefinition == null) throw new Exception(string.Format("Cannot lookup workflow definition with display name: [{0}] on web:[{1}]", workflowSubscriptionModel.WorkflowDisplayName, web.Url)); // EnumerateSubscriptionsByEventSource() somehow throws an exception //var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByEventSource(web.ID); var subscriptions = workflowSubscriptionService.EnumerateSubscriptions().Where(s => s.EventSourceId == web.ID); InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(null, ModelEventType.OnUpdating); var currentSubscription = subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); if (currentSubscription == null) { var taskList = GetTaskList(web, workflowSubscriptionModel); var historyList = GetHistoryList(web, workflowSubscriptionModel); TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new SP2013 workflow subscription"); var newSubscription = new WorkflowSubscription(); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Setting subscription properties"); newSubscription.Name = workflowSubscriptionModel.Name; newSubscription.DefinitionId = currentWorkflowDefinition.Id; newSubscription.EventTypes = new List<string>(workflowSubscriptionModel.EventTypes); newSubscription.EventSourceId = web.ID; newSubscription.SetProperty("HistoryListId", historyList.ID.ToString()); newSubscription.SetProperty("TaskListId", taskList.ID.ToString()); newSubscription.SetProperty("WebId", web.ID.ToString()); newSubscription.SetProperty("Microsoft.SharePoint.ActivationProperties.WebId", web.ID.ToString()); // to be able to change HistoryListId, TaskListId, ListId InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(newSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = newSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling PublishSubscription()"); var currentSubscriptionId = workflowSubscriptionService.PublishSubscription(newSubscription); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing SP2013 workflow subscription"); currentSubscription.EventTypes = new List<string>(workflowSubscriptionModel.EventTypes); InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(currentSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling PublishSubscription()"); workflowSubscriptionService.PublishSubscription(currentSubscription); } }
protected SPList GetHistoryList(SPWeb web, SP2013WorkflowSubscriptionDefinition definition) { return web.GetList(SPUrlUtility.CombineUrl(web.ServerRelativeUrl, definition.HistoryListUrl)); }
public static ModelNode AddSP2013WorkflowSubscription(this ModelNode model, SP2013WorkflowSubscriptionDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
public static ModelNode AddSP2013WorkflowSubscription(this ModelNode model, SP2013WorkflowSubscriptionDefinition definition) { return AddSP2013WorkflowSubscription(model, definition, null); }
private void DeployWorkflowSubscriptionDefinition( object host, SPList list, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { var web = list.ParentWeb; var workflowServiceManager = new WorkflowServicesManager(list.ParentWeb); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); var currentWorkflowDefinition = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (currentWorkflowDefinition == null) throw new Exception(string.Format("Cannot lookup workflow definition with display name: [{0}] on web:[{1}]", workflowSubscriptionModel.WorkflowDisplayName, web.Url)); var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByList(list.ID); InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(null, ModelEventType.OnUpdating); var currentSubscription = subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); if (currentSubscription == null) { var newSubscription = new WorkflowSubscription(); newSubscription.Name = workflowSubscriptionModel.Name; newSubscription.DefinitionId = currentWorkflowDefinition.Id; newSubscription.EventTypes = workflowSubscriptionModel.EventTypes.ToList(); newSubscription.EventSourceId = list.ID; // lookup task and history lists, probaly need to think ab otehr strategy var taskList = web.GetList(SPUrlUtility.CombineUrl(web.Url, workflowSubscriptionModel.TaskListUrl)); var historyList = web.GetList(SPUrlUtility.CombineUrl(web.Url, workflowSubscriptionModel.HistoryListUrl)); newSubscription.SetProperty("HistoryListId", historyList.ID.ToString()); newSubscription.SetProperty("TaskListId", taskList.ID.ToString()); newSubscription.SetProperty("ListId", list.ID.ToString()); newSubscription.SetProperty("Microsoft.SharePoint.ActivationProperties.ListId", list.ID.ToString()); // to be able to change HistoryListId, TaskListId, ListId InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(newSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = newSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); var currentSubscriptionId = workflowSubscriptionService.PublishSubscription(newSubscription); } else { currentSubscription.EventTypes = workflowSubscriptionModel.EventTypes.ToList(); InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(currentSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); workflowSubscriptionService.PublishSubscription(currentSubscription); } }
private void DeployWorkflowSubscriptionDefinition( SP2013WorkflowSubscriptionModelHost host, ClientContext hostClientContext, List list, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { // hostClientContext - it must be ClientContext, not ClientRuntimeContext - won't work and would give some weirs error with wg publishing // use only ClientContext instance for the workflow pubnlishing, not ClientRuntimeContext var context = list.Context; var web = list.ParentWeb; var workflowServiceManager = new WorkflowServicesManager(hostClientContext, hostClientContext.Web); context.Load(web); context.Load(list); context.ExecuteQuery(); hostClientContext.Load(workflowServiceManager); hostClientContext.ExecuteQuery(); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); hostClientContext.Load(workflowSubscriptionService); hostClientContext.Load(workflowDeploymentService); hostClientContext.Load(tgtwis); hostClientContext.ExecuteQuery(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); hostClientContext.Load(publishedWorkflows); hostClientContext.ExecuteQuery(); var currentWorkflowDefinition = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (currentWorkflowDefinition == null) throw new Exception(string.Format("Cannot lookup workflow definition with display name: [{0}] on web:[{1}]", workflowSubscriptionModel.WorkflowDisplayName, web.Url)); var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByList(list.Id); hostClientContext.Load(subscriptions); hostClientContext.ExecuteQuery(); InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(null, ModelEventType.OnUpdating); var currentSubscription = subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); if (currentSubscription == null) { var newSubscription = new WorkflowSubscription(hostClientContext); newSubscription.Name = workflowSubscriptionModel.Name; newSubscription.DefinitionId = currentWorkflowDefinition.Id; newSubscription.EventTypes = workflowSubscriptionModel.EventTypes; newSubscription.EventSourceId = list.Id; // lookup task and history lists, probaly need to think ab otehr strategy var taskList = WebExtensions.QueryAndGetListByUrl(web, workflowSubscriptionModel.TaskListUrl); var historyList = WebExtensions.QueryAndGetListByUrl(web, workflowSubscriptionModel.HistoryListUrl); newSubscription.SetProperty("HistoryListId", historyList.Id.ToString()); newSubscription.SetProperty("TaskListId", taskList.Id.ToString()); newSubscription.SetProperty("ListId", list.Id.ToString()); newSubscription.SetProperty("Microsoft.SharePoint.ActivationProperties.ListId", list.Id.ToString()); // to be able to change HistoryListId, TaskListId, ListId InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(newSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = newSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); var currentSubscriptionId = workflowSubscriptionService.PublishSubscription(newSubscription); hostClientContext.ExecuteQuery(); } else { currentSubscription.EventTypes = workflowSubscriptionModel.EventTypes; InvokeOnModelEvent<SP2013WorkflowSubscriptionDefinition, WorkflowSubscription>(currentSubscription, ModelEventType.OnUpdated); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); workflowSubscriptionService.PublishSubscription(currentSubscription); hostClientContext.ExecuteQuery(); } }
protected virtual void MapProperties(WorkflowSubscription workflow, SP2013WorkflowSubscriptionDefinition definition) { foreach (var prop in definition.Properties) workflow.SetProperty(prop.Name, prop.Value); }
protected WorkflowDefinition GetWorkflowDefinition(object host, ClientContext hostclientContext, Web web, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Resolving workflow definition by DisplayName: [{0}]", workflowSubscriptionModel.WorkflowDisplayName); var context = hostclientContext; //var web = list.ParentWeb; var workflowServiceManager = new WorkflowServicesManager(hostclientContext, web); //context.Load(web); //context.Load(list); context.ExecuteQueryWithTrace(); hostclientContext.Load(workflowServiceManager); hostclientContext.ExecuteQueryWithTrace(); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); hostclientContext.Load(workflowSubscriptionService); hostclientContext.Load(workflowDeploymentService); hostclientContext.Load(tgtwis); hostclientContext.ExecuteQueryWithTrace(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); hostclientContext.Load(publishedWorkflows); hostclientContext.ExecuteQueryWithTrace(); var result = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (result == null) { TraceService.ErrorFormat((int)LogEventId.ModelProvisionCoreCall, "Cannot find workflow definition with DisplayName: [{0}]. Provision might break.", workflowSubscriptionModel.WorkflowDisplayName); } return result; }
protected List GetHistoryList(Web web, SP2013WorkflowSubscriptionDefinition definition) { return WebExtensions.QueryAndGetListByUrl(web, definition.HistoryListUrl); }
private void DeployListWorkflowSubscriptionDefinition( object host, ClientContext hostclientContext, List list, SP2013WorkflowSubscriptionDefinition workflowSubscriptionModel) { // hostclientContext - it must be clientContext, not ClientRuntimeContext - won't work and would give some weirs error with wg publishing // use only clientContext instance for the workflow publishing, not ClientRuntimeContext var context = list.Context; var web = list.ParentWeb; //This WorkflowServiceManager object is created for current web from client context, //but actually it has to be created for parent web of current web. //Otherwise it uses wrong web for provisions with multiple webs //var workflowServiceManager = new WorkflowServicesManager(hostclientContext, hostclientContext.Web); context.Load(web); context.Load(list); context.ExecuteQueryWithTrace(); //This is creation of WorkflowServiceManager with right web var workflowServiceManager = new WorkflowServicesManager(hostclientContext, web); hostclientContext.Load(workflowServiceManager); hostclientContext.ExecuteQueryWithTrace(); var workflowSubscriptionService = workflowServiceManager.GetWorkflowSubscriptionService(); var workflowDeploymentService = workflowServiceManager.GetWorkflowDeploymentService(); var tgtwis = workflowServiceManager.GetWorkflowInstanceService(); hostclientContext.Load(workflowSubscriptionService); hostclientContext.Load(workflowDeploymentService); hostclientContext.Load(tgtwis); hostclientContext.ExecuteQueryWithTrace(); var publishedWorkflows = workflowDeploymentService.EnumerateDefinitions(true); hostclientContext.Load(publishedWorkflows); hostclientContext.ExecuteQueryWithTrace(); var currentWorkflowDefinition = publishedWorkflows.FirstOrDefault(w => w.DisplayName == workflowSubscriptionModel.WorkflowDisplayName); if (currentWorkflowDefinition == null) throw new Exception(string.Format("Cannot lookup workflow definition with display name: [{0}] on web:[{1}]", workflowSubscriptionModel.WorkflowDisplayName, web.Url)); var subscriptions = workflowSubscriptionService.EnumerateSubscriptionsByEventSource(list.Id); hostclientContext.Load(subscriptions); hostclientContext.ExecuteQueryWithTrace(); var currentSubscription = subscriptions.FirstOrDefault(s => s.Name == workflowSubscriptionModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); if (currentSubscription == null) { var taskList = GetTaskList(web, workflowSubscriptionModel); var historyList = GetHistoryList(web, workflowSubscriptionModel); TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new SP2013 workflow subscription"); var newSubscription = new WorkflowSubscription(hostclientContext); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Setting subscription properties"); newSubscription.Name = workflowSubscriptionModel.Name; newSubscription.DefinitionId = currentWorkflowDefinition.Id; newSubscription.EventTypes = workflowSubscriptionModel.EventTypes; newSubscription.EventSourceId = list.Id; newSubscription.SetProperty("HistoryListId", historyList.Id.ToString()); newSubscription.SetProperty("TaskListId", taskList.Id.ToString()); newSubscription.SetProperty("ListId", list.Id.ToString()); newSubscription.SetProperty("Microsoft.SharePoint.ActivationProperties.ListId", list.Id.ToString()); MapProperties(currentSubscription, workflowSubscriptionModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = newSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling PublishSubscription()"); var currentSubscriptionId = workflowSubscriptionService.PublishSubscription(newSubscription); hostclientContext.ExecuteQueryWithTrace(); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing SP2013 workflow subscription"); currentSubscription.EventTypes = workflowSubscriptionModel.EventTypes; MapProperties(currentSubscription, workflowSubscriptionModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentSubscription, ObjectType = typeof(WorkflowSubscription), ObjectDefinition = workflowSubscriptionModel, ModelHost = host }); TraceService.Verbose((int)LogEventId.ModelProvisionCoreCall, "Calling PublishSubscription()"); workflowSubscriptionService.PublishSubscription(currentSubscription); hostclientContext.ExecuteQueryWithTrace(); } }