Archive for January, 2009

Next Page »

MpFx Walkthrough: Creating the ProjectServer Object & Enumerating Project Information

30 January 2009


Popularity: unranked [?]

No Comments »

Ramp Up Launches SharePoint for Developers Track - Part 2

30 January 2009

Last November Microsoft Ramp Up Program: Just Launched SharePoint for Developers Track Part1, Part 2 has just been launched!

It’s a great opportunity to learn about SharePoint development free of charge! Since Project Server is a SharePoint application I highly recommend learning the fundamentals using Ramp Up.

Part 2 includes:

Ramp Up (www.MyRampUp.com) is a free, online program that can help users save time in learning Microsoft technology. The easy-to-access content (provided by subject-matter gurus) is specifically tailored to the Ramp Up program, and offered in a variety of forms (article, v-lab, codecast and slidecast). This SharePoint track, along with the other currently offered tracks (eg, Visual Studio 2008), teaches the important skills in a guided path, making the learning process easier and more efficient. Currently, there are no assessments in the program, so it’s quicker than ever to graduate and receive the reward (25% off on certification and 50% off on e-Learning - only for graduates of Ramp Up). Check out the program (and the new and improved site!), and learn something you can use right away! image

Popularity: unranked [?]

No Comments »

Enterprise Project Management (EPM) Solution Webcast Series

30 January 2009

Starting February 18th, 2009 at 11 am (EST) we will be running a webcast series every Wednesday that will show how the Microsoft Enterprise Project Management (EPM) Solution and related Microsoft technologies can be deployed to meet varying horizontal scenarios.  

Why should customers attend the webcast series?

these webcast are targeted at customers not partners.

Reduce Costs: Seven Steps to Optimize Project Portfolio Selection

Microsoft and UMT Consulting Group invite you to join this complimentary webcast to learn how Microsoft’s Enterprise Project Management (EPM) Solution can help identify and select project portfolios that best align with your organizations business strategy whilst optimizing costs.

image

Registration and Schedule

clip_image001[10]
clip_image002[10]
clip_image003[10]
clip_image004[10]
clip_image005[10]
clip_image006[10]

Capital Planning & Investment Control for Government

Microsoft and Robbins-Gioia invite you to this complimentary webcast to learn how the Capital Planning & Investment Control (CPIC) Solution can help government agencies improve decision making, and effectively control investments throughout their lifecycle.
image

Registration and Schedule

clip_image001clip_image002clip_image003clip_image004clip_image005clip_image006
Connecting the Worlds of Project Portfolio Management & Application lifecycle Management
Microsoft invites you to join this complimentary webcast to learn how integrating Portfolio Management (PPM) and Application Lifecycle Management (ALM) processes helps to improve visibility across the entire development lifecycle and in turn connect two disparate worlds.
image

Registration and Schedule

clip_image001[4]
clip_image002[4]
clip_image003[4]
clip_image004[4]
clip_image005[4]
clip_image006[4]

Growth: Transform Your Business with Innovation Management

You are invited to join this complimentary webcast to learn how Microsoft’s Innovation Process Management (IPM) Solution can help organizations to manage the end-to-end innovation process with greater transparency, coordination and discipline.

image

Registration and Schedule

clip_image001[6]
clip_image002[6]
clip_image003[6]
clip_image004[6]
clip_image005[6]
clip_image006[6]
clip_image007

Maximize Efficiency: Drive ROI by Enhancing Project & Portfolio Execution

Microsoft and Pcubed invite you to join this complimentary webcast to learn how Microsoft’s Enterprise Project Management (EPM) Solution can help organizations to improve project and portfolio execution, eliminate costly overruns and enhance operational efficiency and agility.

image

Registration and Schedule

clip_image001[8]
clip_image002[8]
clip_image003[8]
clip_image004[8]
clip_image005[8]
clip_image006[8]
clip_image007[4]

Popularity: unranked [?]

No Comments »

How to Leverage Project Server 2007 with PerformancePoint Server 2007 Monitoring and Analytics?

30 January 2009

I am pleased to announce the release of a white paper written by Symmetry Corporation entitled:  How to Leverage Project Server 2007 with PerformancePoint Server 2007 Monitoring and Analytics.

This white paper provides an overview of the Microsoft PerformancePoint Server software and how it can be used to develop dashboards with the existing relational and analytical databases created with Microsoft Office Project Server 2007. In addition to detailing some advanced techniques for creating analytically rich scorecards, it covers how to organize Key Performance Indicators (KPIs) and other best practices.

Sample data files (PerformancePoint Builder Workspace and ProClarity Briefing Book)  are also provided for using with corresponding sections of the white paper (see the Readme file for more information).

Other Project Server + PerformancePoint Server resources

TechNet Virtual Lab: Enterprise Project Management and Data Visualization using Microsoft BI Tools and Solutions

After completing this lab, you will be better able to understand how to extend Enterprise Project Management (EPM) data using Microsoft business intelligence tools and solutions.

TechNet live webcast: Performance Management Using Project Server 2007 and PerformancePoint Server 2007 (on demand webcast)

In this webcast, you learn how to use the PerformancePoint Server 2007 to augment the suite of built-in operational reports within Project Server 2007 to deliver a broad range of analysis to the entire organization.

Finally in case you have missed it I recommend you read the latest Microsoft Business Intelligence announcement regarding PerformancePoint Server: Microsoft Brings Business Intelligence to the Masses With SharePoint.

Popularity: unranked [?]

No Comments »

Date Math - DateAdd, ProjDateAdd in Microsoft Project

30 January 2009

I just ran into someone having trouble making a custom formula in Microsoft Project. They were adding a duration to a date by using a + sign. For example:


[Finish1]+[Duration1]

The result they got was years in the future and was unexpected. The reason for this is that Duration is stored in minutes. The duration of an 8 hour day is 480. Dates, like Finish1, are stored as a serial number which is counting from 1/1/1900, making today 39842. When you add those two numbers together, each minute is treated as a day.

Fortunately MS Project has some functions which will do the date math for you. DateAdd will do simple date addition, and ProjDateAdd will do date addition with any of the Project calendars taken into account. If you have a duration of 5 days stored in the Duration1 field and today is Thursday, then the different functions would give the following results:

Now()+[Duration1] would give a date about 7 years from now.

DateAdd( "d", 5, now()) will give a date five days from today (Tuesday).

ProjDateAdd(Now(),[Duration1],"Standard") would give a date one work week
from today. (Thursday)

Popularity: unranked [?]

No Comments »

News for All PSI Developers

30 January 2009

If you are doing Project Server development using the PSI then you NEED to check out what Colby Africa is doing with mpFx.  This is a set of class libraries that simplifies the development of PSI code. It reduces the number of calls you need to make to do things like create projects, assign resources, create tasks, etc.

This is what is required to create a project and wait for the queue job to finish:

   1: namespace Microsoft.SDK.Project.Samples.QueueCreateProject
   2: {
   3:     class Program
   4:     {
   5:         [STAThread]
   6:         static void Main(string[] args)
   7:         {
   8:             try
   9:             {
  10:                 const string PROJECT_SERVER_URI = "h//ServerName/ProjectServerName/";
  11:                 const string PROJECT_SERVICE_PATH = "_vti_bin/psi/project.asmx";
  12:                 const string QUEUESYSTEM_SERVICE_PATH = "_vti_bin/psi/queuesystem.asmx";
  13:  
  14:                 Guid jobId;
  15:  
  16:                 // Set up the Web service objects
  17:                 ProjectWebSvc.Project projectSvc = new ProjectWebSvc.Project();
  18:  
  19:                 ProjectWebSvc.ProjectDataSet projectDs = new ProjectWebSvc.ProjectDataSet();
  20:  
  21:                 projectSvc.Url = PROJECT_SERVER_URI + PROJECT_SERVICE_PATH;
  22:                 projectSvc.Credentials = CredentialCache.DefaultCredentials;
  23:  
  24:                 QueueSystemWebSvc.QueueSystem q = new QueueSystemWebSvc.QueueSystem();
  25:                 q.Url = PROJECT_SERVER_URI + QUEUESYSTEM_SERVICE_PATH;
  26:                 q.UseDefaultCredentials = true;
  27:  
  28:                 projectDs = new ProjectWebSvc.ProjectDataSet();
  29:  
  30:                 // Create the project
  31:                 ProjectWebSvc.ProjectDataSet.ProjectRow projectRow = projectDs.Project.NewProjectRow();
  32:                 projectRow.PROJ_UID = Guid.NewGuid();
  33:                 projectRow.PROJ_NAME = "Its a wonderful project at " +
  34:                    DateTime.Now.ToShortDateString().Replace("/", "") + " " +
  35:                    DateTime.Now.ToShortTimeString().Replac", "");
color: #606060">  36:                 projectRow.PROJ_TYPE = (int)PSLibrary.Project.ProjectType.Project;
  37:                 projectDs.Project.AddProjectRow(projectRow);
  38:  
  39:                 // Add some tasks        
  40:                 jobId = Guid.NewGuid();
  41:                 projectSvc.QueueCreateProject(jobId, projectDs, false);
  42:                 WaitForQueue(q, jobId);
  43:  
  44:             }
  45:             catch (SoapException ex)
  46:             {
  47:                 PSLibrary.PSClientError error = new PSLibrary.PSClientError(ex);
  48:                 PSLibrary.PSErrorInfo[] errors = error.GetAllErrors();
  49:                 string errMess = "==============================rnEr rn";
color: #606060">  50:                 for (int i = 0; i < errors.Length; i++)
  51:                 {
  52:                     errMess += "n" + ex.Message.ToString() + "rn";
color: #606060">  53:                     errMess += "".PadRight(30, ‘=’) + "rnPSCLientError Outrn rn";
color: #606060">  54:                     errMess += errors[i].ErrId.ToString() + "n";
color: #606060">  55:  
  56:                     for (int j = 0; j < errors[i].ErrorAttributes.Length; j++)
  57:                     {
  58:                         errMess += "rnt" + errors[i].ErrorAttributeNames()[j]  " + errors[i].ErrorAttributes[j];
  59:                     }
  60:                     errMess += "rn".PadRight(30, ‘=’);
  61:                 }
  62:                 Console.ForegroundColor = ConsoleColor.Red;
  63:                 Console.WriteLine(errMess);
  64:             }
  65:             catch (WebException ex)
  66:             {
  67:                 string errMess = ex.Message.ToString() +
  68:                    "nnLog on, or check the Project Server Queuing Service";
  69:                 Console.ForegroundColor = ConsoleColor.Red;
  70:                 Console.WriteLine("Er " + errMess);
  71:             }
  72:             catch (Exception ex)
  73:             {
  74:                 Console.ForegroundColor = ConsoleColor.Red;
  75:                 Console.WriteLine("Er " + ex.Message);
  76:             }
  77:             finally
  78:             {
  79:                 Console.ResetColor();
  80:                 Console.WriteLine("rnrnPress any key…");
  81:                 Console.ReadKey();
  82:             }
  83:         }
  84:         static private void WaitForQueue(QueueSystemWebSvc.QueueSystem q, Guid jobId)
  85:         {
  86:             QueueSystemWebSvc.JobState jobState;
  87:             const int QUEUE_WAIT_TIME = 2; // two seconds
  88:             bool jobDone = false;
  89:             string xmlError = string.Empty;
  90:             int wait = 0;
  91:  
  92:             //Wait for the project to get through the queue
  93:             // - Get the estimated wait time in seconds
  94:             wait = q.GetJobWaitTime(jobId);
  95:  
  96:             // - Wait for it
  97:             Thread.Sleep(wait * 1000);
  98:             // - Wait until it is done.
  99:  
 100:             do
 101:             {
 102:                 // - Get the job state
 103:                 jobState = q.GetJobCompletionState(jobId, out xmlError);
 104:  
 105:                 if (jobState == QueueSystemWebSvc.JobState.Success)
 106:                 {
 107:                     jobDone = true;
 108:                 }
 109:                 else
 110:                 {
 111:                     if (jobState == QueueSystemWebSvc.JobState.Unknown
 112:                     || jobState == QueueSystemWebSvc.JobState.Failed
 113:                     || jobState == QueueSystemWebSvc.JobState.FailedNotBlocking
 114:                     || jobState == QueueSystemWebSvc.JobState.CorrelationBlocked
 115:                     || jobState == QueueSystemWebSvc.JobState.Canceled)
 116:                     {
 117:                         // If the job failed, error out
 118:                         throw (new ApplicationException("Queue request failed "" + jobState + "" Job " + jobId + ".rn" + xmlError));
 119:                     }
 120:                     else
 121:                     {
 122:                         Console.WriteLine("Job St " + jobState + " Job " + jobId);
 123:                         Thread.Sleep(QUEUE_WAIT_TIME * 1000);
 124:                     }
 125:                 }
 126:             }
 127:             while (!jobDone);
 128:         }

Popularity: 3% [?]

Free online courses for developers - MSDN Ramp Up

30 January 2009

 

Check out the Ramp Up program (http://www.myrampup.com/) if you have not done already. It has interesting tracks including SharePoint…

Popularity: unranked [?]

Enterprise Project Management (EPM) Solution Webcast Series

30 January 2009

From Christophe’s blog:

Starting February 18th, 2009 at 11 am (EST) we will be running a webcast series every Wednesday that will show how the Microsoft Enterprise Project Management (EPM) Solution and related Microsoft technologies can be deployed to meet varying horizontal scenarios.  

Why should customers attend the webcast series?

  • Work Smart - Save time by sending your prospects to a recurring live webcast versus having to deliver the demo yourselves
  • Educate  - Customers will receive a comprehensive overview of each solution and be able to get answers to initial questions
  • It’s Live - Send your customers to a live webcast rather than to a recording or click-through demo
  • Better Together - Show the value of integrating the EPM Solution with SharePoint Server and Visual Studio Team Foundation Server

these webcast are targeted at customers not partners.

Reduce Costs: Seven Steps to Optimize Project Portfolio Selection

Microsoft and UMT Consulting Group invite you to join this complimentary webcast to learn how Microsoft’s Enterprise Project Management (EPM) Solution can help identify and select project portfolios that best align with your organizations business strategy whilst optimizing costs.

image

Registration and Schedule

clip_image001[10]
clip_image002[10]
clip_image003[10]
clip_image004[10]
clip_image005[10]
clip_image006[10]

Capital Planning & Investment Control for Government

Microsoft and Robbins-Gioia invite you to this complimentary webcast to learn how the Capital Planning & Investment Control (CPIC) Solution can help government agencies improve decision making, and effectively control investments throughout their lifecycle.
image

Registration and Schedule

clip_image001clip_image002clip_image003clip_image004clip_image005clip_image006

Connecting the Worlds of Project Portfolio Management & Application lifecycle Management
Microsoft invites you to join this complimentary webcast to learn how integrating Portfolio Management (PPM) and Application Lifecycle Management (ALM) processes helps to improve visibility across the entire development lifecycle and in turn connect two disparate worlds.
image

Registration and Schedule

clip_image001[4]
clip_image002[4]
clip_image003[4]
clip_image004[4]
clip_image005[4]
clip_image006[4]

Growth: Transform Your Business with Innovation Management

You are invited to join this complimentary webcast to learn how Microsoft’s Innovation Process Management (IPM) Solution can help organizations to manage the end-to-end innovation process with greater transparency, coordination and discipline.

image

Registration and Schedule

clip_image001[6]
clip_image002[6]
clip_image003[6]
clip_image004[6]
clip_image005[6]
clip_image006[6]
clip_image007

Maximize Efficiency: Drive ROI by Enhancing Project & Portfolio Execution

Pcubed invite you to join this complimentary webcast to learn how Microsoft’s Enterprise Project Management (EPM) Solution can help organizations to improve project and portfolio execution, eliminate costly overruns and enhance operational efficiency and agility.

image

Registration and Schedule

clip_image001[8]
clip_image002[8]
clip_image003[8]
clip_image004[8]
clip_image005[8]
clip_image006[8]
clip_image007[4]

Popularity: unranked [?]

mpFx: Simon Demo

29 January 2009


Popularity: unranked [?]

Yet Another PWA Hack — Displaying the Project Server Version

28 January 2009

Body:

 

Have you ever wondered which version of Project Server 2007 you’re running? There are a few documented ways to do this, but they require access to the SharePoint Central Administration web site, access to the Project Server machine(s) or SQL Server, or the ability to use developer’s tools. I’ll show you another quick way to add a simple web part to the PWA home page (or any web part page in PWA) which will display the Project Server 2007 version.

 

If you’re not familiar with manipulating SharePoint pages with web parts, see my primer on the topic (‘Hacking PWA with Web Parts’) here:

http://www.projectserverhelp.com/Lists/Posts/Post.aspx?ID=7

Note: this procedure will show the Project Server version for ALL PWA users.

 

 

Displaying the Project Server Version in PWA

Follow these steps to display the Project Server version on the PWA home page:

 

1. Visit the home page in PWA, then select Site Actions > Edit Page in the upper right corner:

 

 

 

2. With PWA home page in edit mode, click the orange ‘Add a Web Part’ button / bar, which spans the entire width of the ‘Header’ web part zone:

 

 

 

3. In the ‘Add Web Parts to Header’ dialog box, select the checkbox next to the ‘Content Editor Web Part’ item, then click the ‘Add’ button:

 

 

 

4. After the ‘Content Editor Web Part’ has been added to the page, pull open the ‘edit’ menu near the upper right corner of the newly-added web part, then select the ‘Modify Shared Web Part’ option:

 

 

 

5. In the ‘Content Editor Web Part’ editing panel which has opened on the right side of the page, click the ‘Source Editor…’ button:

 

 

 

6. In the source editor dialog box, enter the following text, then click the ‘Save’ button:

 

<span id=resultsarea01>&nbsp;</span>

<script language=javascript>

GetVersion();

function GetVersion()

{

var pwaurl = "http://servername/pwa/";

try

{

var wsURL = pwaurl + "_vti_bin/psi/Admin.asmx";

//SOAP Action and XML

var wsSoapAction = "http://schemas.microsoft.com/office/project/server/webservices/Admin/ReadServerVersion";

var wsXML = ‘<?xml version="1.0" encoding="utf-8"?>’;

wsXML += ‘<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ‘;

wsXML += ‘xmlns:xsd="http://www.w3.org/2001/XMLSchema" ‘;

wsXML += ‘xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">’;

wsXML += ‘<soap:Body>’;

wsXML += ‘<ReadServerVersion xmlns="http://schemas.microsoft.com/office/project/server/webservices/Admin/" />’;

wsXML += ‘</soap:Body>’;

wsXML += ‘</soap:Envelope>’;

//Create XML Document and get HTTP response using XMLHTTP object

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

var httpResponse = getServiceResults(wsURL, wsSoapAction, wsXML);

xmlDoc.loadXML(httpResponse);

     var psversionmajor = xmlDoc.getElementsByTagName(’WADMIN_VERSION_MAJOR’);

     var psversionminor = xmlDoc.getElementsByTagName(’WADMIN_VERSION_MINOR’);

     var psversionbuild = xmlDoc.getElementsByTagName(’WADMIN_VERSION_BUILD’);

     var psversionrevision = xmlDoc.getElementsByTagName(’WADMIN_VERSION_REVISION’);

     var psversion = psversionmajor(0).text + "." + psversionminor(0).text + "." + psversionbuild(0).text + ", rev. " + psversionrevision(0).text;

     var txt01 = document.getElementById(’resultsarea01′);

txt01.innerHTML = psversion;

}

catch(Exception)

{

// Suppress any excess script errors to avoid user confusion.

}

}

function getServiceResults(url, soap, xml) {

//Send XML packet to web service and return HTTP response text

try {

if (xml.length > 0) {

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlHttp.open("POST", url, false);

xmlHttp.setRequestHeader("SOAPAction", soap);

xmlHttp.setRequestHeader("Content-Type", "text/xml");

xmlHttp.send(xml);

if (parseInt(xmlHttp.status) == 404) {

return 404;

}

else {

return xmlHttp.responseText;

}

}

}

catch(e) {

alert(e.message);

}

}

</script>

 

 

 

NOTE: The 6th line of the javascript code, var pwaurl = "http://servername/pwa/";, indicates the URL of your PWA site, and needs to be updated in order for the script to work in your environment. Be sure to include the trailing slash on the end!

 

7. In the ‘Content Editor Web Part’ editing panel which should still be open on the right side of the page, expand the ‘Appearance’ heading by clicking [+], then enter ‘Project Server Version’ as the ‘Title’ of the web part:

 

 

 

8. In the ‘Content Editor Web Part’ editing panel which should still be open on the right side of the page, select ‘Title Only’ for the ‘Chrome Type’ of the web part, then click the ‘OK’ button at the bottom of the panel:

 

 

 

9. (Optional) After the ‘Content Editor Web Part’ editing panel is closed, hover the mouse cursor over the header of the new ‘Project Server Version‘ web part until the 4-way cursor is displayed, click and drag the header until it is positioned below the other web parts on the page (as indicated by the colored ‘I-beam’), then drop the web part into the ‘Footer‘ web part zone:

 

 

 

 

 

The new ‘Project Server Version’ web part will now appear at the bottom of the PWA home page:

 

 

 

10. Exit ‘edit mode’ by clicking the ‘Exit Edit Mode’ link near the upper right corner of the page:

 

 

 

The Project Server version is now conveniently displayed at the bottom of the PWA home page:

 

 

 

In Summary…

 

No Server Access Required, and No Custom Coding Required

As long as you have the permission to edit PWA pages, you can perform this hack, regardless of whether you have direct access to the server. This will work in hosted environments (such as ProjectHosts) as well!

 

Be Careful!

Remember… this hack affects all users, so be sure that there isn’t anyone who will be negatively affected by this change in the PWA interface.

 

To undo the change, simply delete the ‘Project Server Version’ web part from the page. To learn how this is done, review my PWA web parts primer (‘Hacking PWA with Web Parts’) here:

 

http://www.projectserverhelp.com/Lists/Posts/Post.aspx?ID=7

 

Happy hacking!

Category: Project Server Administration
Published: 1/28/2009 12:35 AM

Popularity: 2% [?]


Next Page »