For creating Stages using CSOM, we have to use StageCreationInformation.
1. First of all, assign basic information to Stage.
Microsoft.ProjectServer.Client.StageCreationInformation stageInfo = new Microsoft.ProjectServer.Client.StageCreationInformation();
stageInfo.Behavior = Microsoft.ProjectServer.Client.StrategicImpactBehavior.ReadOnly;
stageInfo.CheckInRequired =false;
stageInfo.Description ="Test Description";
stageInfo.Id = new Guid();
stageInfo.Name ="Test";
stageInfo.WorkflowStatusPageId ="Project Detail Page id related to this stage";
stageInfo.PhaseId = "Phase id related to this stage";
2. Add Project Detail Page Information to current stage,if any
List<Microsoft.ProjectServer.Client.StageDetailPageCreationInformation> lstSDPs = new List<Microsoft.ProjectServer.Client.StageDetailPageCreationInformation>();
Microsoft.ProjectServer.Client.StageDetailPageCreationInformation sdpInfo = new Microsoft.ProjectServer.Client.StageDetailPageCreationInformation();
sdpInfo.Description = "Test description";
sdpInfo.Id ="Project Detail Page id related to this stage";
sdpInfo.Position ="1";
sdpInfo.RequiresAttention = "false";
lstSDPs.Add(sdpInfo);
if (lstSDPs.Count > 0)
stageInfo.ProjectDetailPages = lstSDPs;
3. Add Custom Field Information to current stage, if any
List<Microsoft.ProjectServer.Client.StageCustomFieldCreationInformation> lstSCFs = new List<Microsoft.ProjectServer.Client.StageCustomFieldCreationInformation>();
Microsoft.ProjectServer.Client.StageCustomFieldCreationInformation scfInfo = new Microsoft.ProjectServer.Client.StageCustomFieldCreationInformation();
scfInfo.Id = new Guid();
scfInfo.ReadOnly = true;
scfInfo.Required = true;
lstSCFs.Add(scfInfo);
if (lstSCFs.Count > 0)
stageInfo.CustomFields = lstSCFs;
4. In the last,create Stages with all the above details
Microsoft.ProjectServer.Client.Stage newStage = projectContext.Stages.Add(stageInfo);
projectContext.Stages.Update();
projectContext.ExecuteQuery();
Hope this information will help you.
Thanks
0 Comment(s)