About Me

Having 12 years experience in Microsoft technologies.Since more than 7 years working in SharePoint technologies. Expert in providing consultation for SharePoint projects. Hands on with development and administration.

Tuesday, 14 June 2016

Project Server 2013 - Create tasks for the selected project - CSOM


In this article, I will show you how to create tasks for selected project in PWA site using CSOM in project server 2013. In this series of articles, I am taking windows application as a working example to read/write data from PWA.
Prerequisites
1.      Visual studio 2010/2012/2013/2015

2.      Copy Microsoft.ProjectServer.Client.dll from SharePoint 2013 servers from the location

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI

Step1: Create windows application from visual studio

Step2: Add Microsoft.ProjectServer.Client.dll

Step3: Add one two text boxes and one button control to the form.

Step4: Declare PWA site URL in form load. Change URL accordingly based on your environment

private const string pwaPath = "https://dev.xxx.com/PWA/";

Step5: Declare project context and project type on Form load

private static ProjectContext projContext;

Step6: Add following code on button click event

private void createTask_Click (object sender, EventArgs e)

{

// create PWA context

projContext = new ProjectContext(pwaPath); 

// Access with default logged in credentials

projContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

try
             {       

projContext.Load(projContext.Projects); 

                projContext.ExecuteQuery();           

// pass project GUID in place of combo box selection

PublishedProject pubProject = projContext.Projects.GetByGuid(Guid.Parse(comboProjects.SelectedValue.ToString())); 

                projContext.Load(pubProject); 

                var job = projContext.Projects.Update(); 

                projContext.ExecuteQuery(); 

                DraftProject projectDraft = pubProject.CheckOut(); 

                TaskCreationInformation taskCreation = new TaskCreationInformation(); 

                taskCreation.Name = txtTaskName.Text;

                taskCreation.Start = dateTimeStart.Value;

                taskCreation.Finish = dateTimeFinish.Value;

                taskCreation.Id = Guid.NewGuid();

                taskCreation.Duration = txtDuration.Text;

                taskCreation.IsManual = true;               

                projectDraft.Tasks.Add(taskCreation); 

                projectDraft.Update(); 

                projectDraft.Publish(true); 

                if (WaitForJob(projContext, job))
                {

                    //label1.Text = "Task Created";

                }
                else
                {
                    label1.Text = "Task failed";

                }

                projectDraft.CheckIn(true);

                projContext.ExecuteQuery(); 

            }

            catch(Exception ex)
            {           
            }

Happy project server programming...

 

No comments:

Post a Comment