Click here to close now.

Welcome!

You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Maureen O'Gara, Nancy Y. Nee, Tad Anderson, Daniel Kaar

Related Topics: ColdFusion

ColdFusion: Article

ProjectFusion: ColdFusion Project Server Integration

Manage tasks, resources, and projects

Most people are familiar with Microsoft Project - project management software that allows you to manage many aspects of projects including tasks, due dates, progress, and people assigned to specific tasks.

Microsoft Project Server is an enterprise storage product that facilitates sharing project plans created with Microsoft Project with other people in a company, especially other project managers. Project Server enables you to manage a workforce by tracking all projects in common and giving you a view of all projects that an individual may be assigned to. Chances are that any large organization will have more than one project manager and using a centralized storage point allows for better group management of projects. In this kind of environment, Project Server acts as the central repository and Microsoft Project acts as a client to access that information. Project Server also provides a Web interface for viewing the status of projects.

The principal (recommended) way to integrate with Microsoft Project is by using the integrated Project Data Service (PDS) that's included with Microsoft Project Server. PDS is a SOAP Web service that translates incoming requests and manages their entry into the system. The most common integration pieces are external user management, timesheet systems, and ticketing systems. The PDS exposes pieces of the puzzle that allow you to integrate with these external systems and to integrate all the parts of your organizational project systems.

The PDS will allow you to create projects, tasks, resources, as well as log time against projects and run administrative reports on information in the system. Granted, for most integration you'll want to use the Microsoft hooks into other Microsoft products. For example, Project Server boasts excellent integration with Microsoft's Outlook Exchange, Active Directory, and Sharepoint. If those are your only integration points, any work you would need to do is done by Microsoft, but if you need to work with a non-Microsoft product, read on.

Often times the largest integration obstacle is simply learning how a product works, and that can easily be the case with Microsoft Project. The initial learning curve of Microsoft Project may be steep but it's worth the hurdle to reach familiarization with the application before and during your implementation. You can retrieve a copy of the Microsoft Project Server API help files from this location: www.microsoft.com/downloads/details.aspx?FamilyID=4D2ABC8C-8BCA-4DB9-8753-178C0D3099C5&displaylang=en .

I'll now focus on the basics of the PDS and share some code that you can use in your organization to hook into Project Server.

Authentication
The first thing you have to do in any integration is authenticate with the other system. In Project Server land authentication is a three-part process: authenticate with Project Server, create the session, and authenticate with PDS Web services. If you're trying this on your local system, the best way to debug and observe the authentication steps is to turn on prompting for all cookies and turn off automatic forwarding in your Web browser.

To authenticate with Project Server:


 <cfhttp method="get"  url="http://#projectserver#/projectserver/lgnPSAu.asp"
   redirect="No" timeout="60">
    <cfhttpparam name="un" value="#pjUname#" type="url">
    <cfhttpparam name="pwd" value="#pjPwd#" type="url">
</cfhttp>

Next take the cookie from the Project Server login page and pass it to the session manager:


<cfhttp method="post" url="http://#projectserver#/projectserver/SesStart.asp?
ref=lgnpsau.asp&au=0" redirect="No" timeout="60">
  <cfhttpparam name="PjSessionID" value="#urldecode(PjSessionCookie)#" 
  type="Cookie">
</cfhttp>

Passing in the cookie to Project Server instantiates the session on Project Server and initiates the security system.


<cfhttp method="post"  url="http://#projectserver#/projectserver/lgnpsau.asp?err=0"
 redirect="No" timeout="60">
   <cfhttpparam name="PjSessionID" value="#urldecode(PjSessionCookie)#" type="Cookie">
</cfhttp>

After the third cfhttp call, you'll receive an XML session cookie to use with Web services. Each and every Web service request must be accompanied with the XML session cookie provided in the last step. This cookie serves to associate your session with the system and Project Server uses this to manage the security and show you the correct projects that your username has access to. To make things easier, create an object and function to send the cookie and the XML request to Project Server.


<cfobject webservice="http://sjn-msp-02/projectserver/pds.wsdl" name="pdshandle">

  // Function to make it easier to send requests to the web service
    function pdsSend(myxml) {
       var returnedxml = "";
        returnedxml = xmlparse(pdshandle.soapxmlrequest(sessioncookie,m
		yxml));
        return returnedxml;
   }

From here you just have to send SOAP requests to the Project Server to manage whatever project you're working on. The first step is to create a project using the PDS <CreateProject> method:


 initialProject = pdsSend("<Request><ProjectCreate><AutoPublish>1</AutoPublish>
 <Project>
<ProjectName>#projectname#</ProjectName><Title>MY Test ColdFusion
 Project</Title><Company>eBay</Company><StartDate>#dateformat(now(),'yyyymmdd')#
 </StartDate></Project></ProjectCreate></Request>");

You can use this method to fully create a project and tasks, if you know all of the details about the project, such as tasks, resources, and assignments. For this example, though, project creation is broken down into each respective method call to show a wider variety of methods associated with the PDS. This example creates only one project but the PDS allows you to create multiple projects in one request. A large number of PDS methods allow you to create or modify several items in one request, which can be very convenient; however, if one item fails, all other items will fail as well.

Replies from the PDS Web service always come back in the same format: an XML response with an hresult and status node. A status code of 0 means that your request was successful; anything greater than a 0 means that something went wrong and the request failed. Figure 1 shows a <CFDUMP> of the resultant XML that is returned by PDS.

Next, check out the project you just created using the Web service call <ProjectsCheckout> to add tasks, resources, and assignments to it.


projectcheckout = pdsSend("<Request><ProjectsCheckout><Project>
<ProjectID>#projectID#
</ProjectID>
</Project><Project><ProjectID>1</ProjectID></Project>
</ProjectsCheckout>
</Request>");

In the <ProjectsCheckout> Web service call, there are two projects being checked out: the project you just created from the PDS system and the ID for the global resources project. To add resources or users to Project Server, it's necessary to check out the global project because the resources will also be added to the global project. In the default configuration, the global project should have an ID of 1 and the name of resglobal, but this may be different for your configuration. It helps to keep in mind that within Project Server, users are a type of resource.

Once the global resource project is checked out, create a resource by calling the <ResourcesAdd> method.


resourceinfo = pdsSend("<Request><ResourcesAdd><Resources><Resource>
<Name>#resourcename#</Name></Resource></Resources></ResourcesAdd></Request>");

The default type of resource created is the "work" type, meaning a person. When a work resource is created with this PDS method, it automatically creates a Project Server Web access login for the resource as well. PDS returns the enterprise resource ID or Enterprise User ID (EUID) of the user that is created. The EUID is needed for successive method calls and it must be parsed out.

Although the resource has been added to Project Server, it still needs to be added to the project that was just created in order to assign the resource to a task. Using <ProjectResourcesCreate> you can add one or several resources to the project.


ProjResource = pdsSend("<Request><ProjectResourcesCreate><AutoPublish>1</AutoPublish>
<ProjectID>#projectID#</ProjectID><Resources><Resource><EUID>#resourceUID#
</EUID></Resource></Resources></ProjectResourcesCreate></Request>");

At this point there is a little bit of a problem. The resource was added to Project Server and an EUID was created, but unfortunately the EUID can't be used in the project for assignments. For resources in Project Server there are three IDs to choose from when trying to assign a resource to a specific task in a project. Resources have an enterprise resource ID or EUID (one that corresponds to the resource ID of the resource global project), a project resource Unique ID (UID), and a Resource ID.

To assign the resource to the task, you need to find the UID for the resource. You can accomplish this by making another request to get the details for the project using the <ProjectData> method and then taking the EUID received after adding the resource to Project Server and matching it with the EUID that's returned with the project data. The <ProjectData> method returns a complete resource object that includes the EUID and the UID for that particular project.


projectdata =  pdsSend("<Request><ProjectData><ProjectID>#projectID#</ProjectID>
<ReturnUIDs>1</ReturnUIDs></ProjectData></Request>");

Sound confusing? It helps to think of Project Server organizing everything into projects. When a resource is added to a project, it creates a Unique ID for that project. The EUID corresponds to the Unique ID for the resource in the global project.

There's one other thing that you need the project data for: to find out what the next Task ID should be. If you have installed the latest service pack from Microsoft for Project Server, you won't need to do this step. For previous versions of Project Server you'll need to find out what the next Task ID is and include it with the Project ID in the task creation method <ProjectTasksCreate>.


Taskxml = pdsSend("<Request><ProjectTasksCreate><AutoPublish>1</AutoPublish>
<ProjectID>#ProjectID#</ProjectID><Tasks><Task><Name>#taskname#</Name>
<ID>#projectTaskID#</ID><Finish>#dateformat(taskenddate,'yyyymmdd')
##timeformat(taskenddate,'HHmmss')#</Finish><Start>#dateformat(taskstartdate,'yyyymmdd')
##timeformat(taskstartdate,'HHmmss')#</Start></Task></Tasks>
</ProjectTasksCreate></Request>");

Once the task has been added to the project, assign a resource to the task using <ProjectAssignmentsCreate>.


ProjAssign = pdsSend("<Request><ProjectAssignmentsCreate><AutoPublish>1</AutoPublish>
<ProjectID>#ProjectID#</ProjectID><Assignments><Assignment>
<TaskID>#projectTaskID#</TaskID><ResourceID>#ProjectResourceID#</ResourceID>
<Units>100</Units><Finish>#dateformat(taskenddate,'yyyymmdd')
##timeformat(taskenddate,'HHmmss')#</Finish><Start>#dateformat(taskstartdate,'yyyymmdd')
##timeformat(taskstartdate,'HHmmss')#</Start></Assignment></Assignments>
</ProjectAssignmentsCreate></Request>");

A resource can only be assigned to a task once. However, several resources can be assigned to complete a task. Assignments have their own start dates and end dates as well, because specific assignments can be less than the duration of the task. To finish it off, check the project back in and voilà, you've created your own project in Project Server!


projectcheckin = pdsSend("<Request><ProjectsCheckin><Project>
<ProjectID>#projectID#
</ProjectID>
</Project><Project><ProjectID>1</ProjectID></Project>
</ProjectsCheckin>
</Request>");

Conclusion
Once all of the above steps have been completed, you have a project in which you can manage tasks, resources, and projects. Using the Web service calls discussed in this article, you can do anything from tracking the status of projects, to managing resources and resource availability on an enterprise scale with your custom applications. Integrating with Project Server using ColdFusion's built-in processing tools is a great way to connect your enterprise applications to Microsoft's project management tools. If you're interested in doing more with Project Server, you'll find more information at these Web sites:

  • The official developer's network that includes tools and information for dealing with Microsoft Project including developer guides and helpful information about integrating with Microsoft Project Server and Microsoft Project: http://msdn.microsoft.com/project
  • Microsoft Project Users Group is an independent Web site that features Microsoft Project and project management resources for those interested in finding out more about how other project management professionals are doing things in the real world: www.mpug.org

More Stories By John Hirschi

Jon Hirschi is a Senior Web Developer at eBay Inc. specializing in content and knowledge management systems. He has been using ColdFusion since version 4.0.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@ThingsExpo Stories
The 3rd International Internet of @ThingsExpo, co-located with the 16th International Cloud Expo - to be held June 9-11, 2015, at the Javits Center in New York City, NY - announces that its Call for Papers is open. The Internet of Things (IoT) is the biggest idea since the creation of the Worldwide Web more than 20 years ago.
SYS-CON Events announced today that CommVault has been named “Bronze Sponsor” of SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY, and the 17th International Cloud Expo®, which will take place on November 3–5, 2015, at the Santa Clara Convention Center in Santa Clara, CA. A singular vision – a belief in a better way to address current and future data management needs – guides CommVault in the development of Singular Information Management® solutions for high-performance data protection, universal availability and sim...
Cloud is not a commodity. And no matter what you call it, computing doesn’t come out of the sky. It comes from physical hardware inside brick and mortar facilities connected by hundreds of miles of networking cable. And no two clouds are built the same way. SoftLayer gives you the highest performing cloud infrastructure available. One platform that takes data centers around the world that are full of the widest range of cloud computing options, and then integrates and automates everything. Join SoftLayer on June 9 at 16th Cloud Expo to learn about IBM Cloud's SoftLayer platform, explore se...
The list of ‘new paradigm’ technologies that now surrounds us appears to be at an all time high. From cloud computing and Big Data analytics to Bring Your Own Device (BYOD) and the Internet of Things (IoT), today we have to deal with what the industry likes to call ‘paradigm shifts’ at every level of IT. This is disruption; of course, we understand that – change is almost always disruptive.
SYS-CON Media announced today that 9 out of 10 " most read" DevOps articles are published by @DevOpsSummit Blog. Launched in October 2014, @DevOpsSummit Blog offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. The widespread success of cloud computing is driving the DevOps revolution in enterprise IT. Now as never before, development teams must communicate and collaborate in a dynamic, 24/7/365 environment. There is no time to wait for long development cycles that produce softw...
Wearable technology was dominant at this year’s International Consumer Electronics Show (CES) , and MWC was no exception to this trend. New versions of favorites, such as the Samsung Gear (three new products were released: the Gear 2, the Gear 2 Neo and the Gear Fit), shared the limelight with new wearables like Pebble Time Steel (the new premium version of the company’s previously released smartwatch) and the LG Watch Urbane. The most dramatic difference at MWC was an emphasis on presenting wearables as fashion accessories and moving away from the original clunky technology associated with t...
The world's leading Cloud event, Cloud Expo has launched Microservices Journal on the SYS-CON.com portal, featuring over 19,000 original articles, news stories, features, and blog entries. DevOps Journal is focused on this critical enterprise IT topic in the world of cloud computing. Microservices Journal offers top articles, news stories, and blog posts from the world's well-known experts and guarantees better exposure for its authors than any other publication. Follow new article posts on Twitter at @MicroservicesE
SYS-CON Events announced today that Site24x7, the cloud infrastructure monitoring service, will exhibit at SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. Site24x7 is a cloud infrastructure monitoring service that helps monitor the uptime and performance of websites, online applications, servers, mobile websites and custom APIs. The monitoring is done from 50+ locations across the world and from various wireless carriers, thus providing a global perspective of the end-user experience. Site24x7 supports monitoring H...
After making a doctor’s appointment via your mobile device, you receive a calendar invite. The day of your appointment, you get a reminder with the doctor’s location and contact information. As you enter the doctor’s exam room, the medical team is equipped with the latest tablet containing your medical history – he or she makes real time updates to your medical file. At the end of your visit, you receive an electronic prescription to your preferred pharmacy and can schedule your next appointment.
SYS-CON Events announced today that SafeLogic has been named “Bag Sponsor” of SYS-CON's 16th International Cloud Expo® New York, which will take place June 9-11, 2015, at the Javits Center in New York City, NY. SafeLogic provides security products for applications in mobile and server/appliance environments. SafeLogic’s flagship product CryptoComply is a FIPS 140-2 validated cryptographic engine designed to secure data on servers, workstations, appliances, mobile devices, and in the Cloud.
The WebRTC Summit 2014 New York, to be held June 9-11, 2015, at the Javits Center in New York, NY, announces that its Call for Papers is open. Topics include all aspects of improving IT delivery by eliminating waste through automated business models leveraging cloud technologies. WebRTC Summit is co-located with 16th International Cloud Expo, @ThingsExpo, Big Data Expo, and DevOps Summit.
@ThingsExpo has been named the Top 5 Most Influential M2M Brand by Onalytica in the ‘Machine to Machine: Top 100 Influencers and Brands.' Onalytica analyzed the online debate on M2M by looking at over 85,000 tweets to provide the most influential individuals and brands that drive the discussion. According to Onalytica the "analysis showed a very engaged community with a lot of interactive tweets. The M2M discussion seems to be more fragmented and driven by some of the major brands present in the M2M space. This really allows some room for influential individuals to create more high value inter...
SYS-CON Events announced today the IoT Bootcamp – Jumpstart Your IoT Strategy, being held June 9–10, 2015, in conjunction with 16th Cloud Expo and Internet of @ThingsExpo at the Javits Center in New York City. This is your chance to jumpstart your IoT strategy. Combined with real-world scenarios and use cases, the IoT Bootcamp is not just based on presentations but includes hands-on demos and walkthroughs. We will introduce you to a variety of Do-It-Yourself IoT platforms including Arduino, Raspberry Pi, BeagleBone, Spark and Intel Edison. You will also get an overview of cloud technologies s...
Containers and microservices have become topics of intense interest throughout the cloud developer and enterprise IT communities. Accordingly, attendees at the upcoming 16th Cloud Expo at the Javits Center in New York June 9-11 will find fresh new content in a new track called PaaS | Containers & Microservices Containers are not being considered for the first time by the cloud community, but a current era of re-consideration has pushed them to the top of the cloud agenda. With the launch of Docker's initial release in March of 2013, interest was revved up several notches. Then late last...
SOA Software has changed its name to Akana. With roots in Web Services and SOA Governance, Akana has established itself as a leader in API Management and is expanding into cloud integration as an alternative to the traditional heavyweight enterprise service bus (ESB). The company recently announced that it achieved more than 90% year-over-year growth. As Akana, the company now addresses the evolution and diversification of SOA, unifying security, management, and DevOps across SOA, APIs, microservices, and more.
GENBAND has announced that SageNet is leveraging the Nuvia platform to deliver Unified Communications as a Service (UCaaS) to its large base of retail and enterprise customers. Nuvia’s cloud-based solution provides SageNet’s customers with a full suite of business communications and collaboration tools. Two large national SageNet retail customers have recently signed up to deploy the Nuvia platform and the company will continue to sell the service to new and existing customers. Nuvia’s capabilities include HD voice, video, multimedia messaging, mobility, conferencing, Web collaboration, deskt...
The Open Compute Project is a collective effort by Facebook and a number of players in the datacenter industry to bring lessons learned from the social media giant's giant IT deployment to the rest of the world. Datacenters account for 3% of global electricity consumption – about the same as all of Switzerland or the Czech Republic -- according to people I met at the recent Open Compute Summit in San Jose. With increasing mobility at the edge of the cloud and vast new dataflows being predicted with the growth of the Internet of Things (and The Coming Age of Many Zettabytes) in the near...
SYS-CON Events announced today that Cisco, the worldwide leader in IT that transforms how people connect, communicate and collaborate, has been named “Gold Sponsor” of SYS-CON's 16th International Cloud Expo®, which will take place on June 9-11, 2015, at the Javits Center in New York City, NY. Cisco makes amazing things happen by connecting the unconnected. Cisco has shaped the future of the Internet by becoming the worldwide leader in transforming how people connect, communicate and collaborate. Cisco and our partners are building the platform for the Internet of Everything by connecting the...
15th Cloud Expo, which took place Nov. 4-6, 2014, at the Santa Clara Convention Center in Santa Clara, CA, expanded the conference content of @ThingsExpo, Big Data Expo, and DevOps Summit to include two developer events. IBM held a Bluemix Developer Playground on November 5 and ElasticBox held a Hackathon on November 6. Both events took place on the expo floor. The Bluemix Developer Playground, for developers of all levels, highlighted the ease of use of Bluemix, its services and functionality and provide short-term introductory projects that developers can complete between sessions.
Temasys has announced senior management additions to its team. Joining are David Holloway as Vice President of Commercial and Nadine Yap as Vice President of Product. Over the past 12 months Temasys has doubled in size as it adds new customers and expands the development of its Skylink platform. Skylink leads the charge to move WebRTC, traditionally seen as a desktop, browser based technology, to become a ubiquitous web communications technology on web and mobile, as well as Internet of Things compatible devices.