old projectified

where brian kennemer used to endlessly obsess about project server, so that you did not have to

Posts
  • old projectified

    Taking Requests

    • 0 Comments

    After having tested and found what I think are good settings for my screencasting I would like to gather suggestions for topics to cover.

    Im thinking of a variety of topics ranging from beginning user tips around using Project Standard\Professional (creating views, setting baselines, using Usage views to look at and edit time scaled data) all the way up to more advanced things like Data Analysis views, security model ins and outs and resource management.

    Please email me with any ideas.

  • old projectified

    Final Test: Progress Lines in Project, Now with Stilted\Halting Voiceover

    • 1 Comments

    OK. I’m learning how to use encoder to manipulate things like viewer size and whatnot. Sadly, it does not fix how freaked out I am when I know I’m being recorded. So you will have to put up with some “UMs and ERRs” in this one (and likely for a while until I become used to this recording thing.) :-)

     

    I think this size will allow decent viewing with the embedded player without having to go full screen. Let me know.

     

  • old projectified

    Is Agile Really just “Good Project Management”?

    • 3 Comments

    Glenn Alleman has a great post here asking the question “If I'm Doing Project Management Right am I Agile?” and my answer is a resounding PROBABLY!!!  :-)

    I have been thinking this same thing since way back in 2004 when I posted about an article I saw about agile methods. My post was called “Agile Methods: Based on False Assumptions?” In it I talked about how many of the points the author was making about what it called “Traditional Management” was really just bad management. This was at a time when I was on some email lists that talked about PM methods and I was getting the feeling that Agile had been created by a group of people that had worked for the WORST PMS EVER. The stories they told and the processes they talked about were not the PM I understood and practiced. It was some horrible torture method designed by people that did not like software developers. I started to feel like the Agile community was a support group for abused software developers. The hard part was that they were talking about “Project Managers” as if they were an interchangeable set of identical parts” (IRONIC since that was one of the main accusations the agile community was making about how PMs saw software developers.)

    That said I don’t think that good project management and Agile methods are a 100% overlap I do think that if you are doing project management correctly and the methods you are using in the management of your project are well fit to the particular project you are managing then what you are doing will NOT be the kind of PM that the agile community rails against. So for the most part the answer to Glenn’s question is YES. :-)

  • old projectified

    New Version of Help File version of Project Server Tech Articles

    • 0 Comments

    There is a new version of the help file that contains all the Project Server technical articles. Great if you need to review one while you are away from your internet connection.

  • old projectified

    News for All PSI Developers

    • 0 Comments

    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", "");
      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 = "==============================\r\nEr \r\n";
      50:                 for (int i = 0; i < errors.Length; i++)
      51:                 {
      52:                     errMess += "\n" + ex.Message.ToString() + "\r\n";
      53:                     errMess += "".PadRight(30, '=') + "\r\nPSCLientError Out\r\n \r\n";
      54:                     errMess += errors[i].ErrId.ToString() + "\n";
      55:  
      56:                     for (int j = 0; j < errors[i].ErrorAttributes.Length; j++)
      57:                     {
      58:                         errMess += "\r\n\t" + errors[i].ErrorAttributeNames()[j]  " + errors[i].ErrorAttributes[j];
      59:                     }
      60:                     errMess += "\r\n".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:                    "\n\nLog 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("\r\n\r\nPress 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 + ".\r\n" + 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:         }
     129:     }
     130: }

     

    Here is the same code in mpFx:

       1: using System;
       2: using System.Web.Services.Protocols;
       3: using CodePlex.MicrosoftProject.mpFx;
       4: using CodePlex.MicrosoftProject.mpFx.ProjectsWebService;
       5:  
       6: namespace ConsoleTest
       7: {
       8:     class Program
       9:     {
      10:         static void Main(string[] args)
      11:         {
      12:             using (ProjectServer projectServer = new ProjectServer("h//epm2007demo/pwa", DataStoreEnum.WorkingStore))
      13:             {
      14:                 using (ProjectDataSet projectDataSet = EntityFactory.NewProject("Demo"))
      15:                 {
      16:                     try
      17:                     {
      18:                         projectServer.Projects.Create(projectDataSet, false, true);
      19:                     }
      20:                     catch (SoapException exception)
      21:                     {
      22:                         Console.WriteLine(Errors.ProcessMSProjectErrors(exception));
      23:                     }
      24:                     catch (Exception exception)
      25:                     {
      26:                         Console.WriteLine(exception.Message);                        
      27:                     }
      28:                 }
      29:             }
      30:         }
      31:     }
      32: }

    32 lines of code as opposed to 130!

  • old projectified

    Server-Side Calculation of Custom Field Formulas

    • 2 Comments

    So I have a PSI application that pulls data from Oracle Financials and correlates it to specific projects in Project Server. using a key field it brings over 6 fields and writes it to 6 Project level Enterprise Number fields. It updates the fields and then calls QueueUpdateProject which should trigger a recalculation of custom field formulas. I also have several custom fields that use the original 6 fields in their formulas.

    My problem is that the fields with formulas were not getting updated. If I opened the project into Project Professional then they calculated just fine.

    It turns out that there is a problem with the calculation ‘engine’ in Project Server that causes it to stop recalculating these formulas if any one of them returns an error. In my case the error was caused by this formula: [Capital Actuals]/[Capital Plan] because for some of the projects the Capital Plan field was 0.

    The solution is to make sure your formulas cannot return such an error. In my case it was changing the formula to this:
    IIF([Capital Plan]>0, [Capital Actuals]/[Capital Plan], 0)

    Similar issues can possibly be caused by a formula like [Field A]+[Field B] if either A or B have been deleted.

    So if any of you are having issues where your field formulas are not refreshing properly go and check all your formulas and see if any of them are returning errors.

     

    Merry Christmas\Happy Holidays\Have a Happy Next Two Weeks :-)

  • old projectified

    Thankful

    • 1 Comments

    Given the season I have started thinking about what I’m thankful for. Here is my list of a few things I am thankful for this year:

    1. My wife and my children. All the normal clichés apply of course but they are clichés. I would not be where I am or who I am without them.
    2. The health of my grandparents. At 90 and 87 they are going strong.
    3. The almost unbelievable luck of getting to work for Microsoft getting paid to do something I love to do and am good at doing. At least once a month I think about how lucky I am to be here.
    4. My team, The MCS EPM Global Practice. Scary smart and dedicated to making sure that customers are doing their best work around project and portfolio management.
    5. Multiple Level Undo. I get goose bumps just writing the words.
    6. The Election
    7. The Zune. All you can eat music.
    8. The Amazon Kindle. Books books and more books.
    9. Windows Server 2008 running on a Lenovo T61p with 4 gigs of RAM. Wow!
    10. The promise of the future
  • old projectified

    Project Server Technical Library in a Single File

    • 1 Comments

    I know what you are saying “No way, how could they do it?” But it is all right there. It slices, it dices it makes thousands of julienne fries. But it also lets you have every technical document on Project Server 2007 in one place that you can search. It is amazing. NOW how much would you pay. OK anyway… this is pretty cool and you should download it right now. Tech Docs in a Single File

    image

    Now when I downloaded it I got a small issue where it would not show me any of the content. I’m not sure if this is an issue based on my OS (I’m running Windows Server 2008 on my laptop) but here is the fix. If you right click on the .chm file and then hit Properties you may see a button that says “Unblock” if you see it then click it and then you will be able to see the content of the file.

    image

  • old projectified

    Reliability\Quality of Data

    • 3 Comments

    In the past few weeks I have seen a ton of questions floating around about users of project management systems wanting to see reporting showing resource capacity vs. demand. Now you might be saying “But Brian, that is pretty common. Doesn’t EVERYONE want this kind of data from their PM system?” to which I would reply “Certainly, but these requests were different in that they all wanted to see it for time periods going out as far as 2 years into the future.” My question is what is someone going to do with a comparison between demand (scheduled work) and availability that far into the future? The instant answer I always get is that they want to see how the current load of projects scheduled is placing demand on their resources and that is a good answer. But in my opinion most organizations are just not good enough at scheduling and estimating and forecasting to make schedule data that far into the future of a quality that would support any real decision making around demand\capacity problems. Schedules are hard enough to get accurate for the next 2 months let alone the next 2 years.

    There are industries or environments\situations where the type of projects being done are easy to estimate because they have a high similarity with projects that have already been done but for the most part capacity\demand data derived from project schedules should be looked at as ‘fuzzy’ if the time period of the data is farther out than a few months and even fuzzier if it is more than a year out.

    There are decisions that can be made based on this data but they should be made with the knowledge that those numbers could swing wildly in some cases depending on changes to the project as it moves forward. The adage that some data is better than no data holds true for the most part but ‘some data’ that is highly suspect but still used in the decision making process as if it was certain is worse than no data.

    When you are looking at data that depends on the quality of your schedule estimates and project WBS you need to think about that quality when you make decisions based on that data. Where are those estimates coming from? Are they top-down estimates (like many that are that far out into the future) or are they bottoms-up estimates coming from the resources that will do the work (hard to do when the tasks in question are months or even over a year in the future?

  • old projectified

    To RBS or Not to RBS?

    • 0 Comments

    There can be confusion among those deploying Project Server about if they need to define and use an RBS as part of their security structure. There is lots of information and a lot of opinions. Here is more information and one more opinion. Hopefully one that rings true in your experience.

    When you Need RBS

    In my experience the use of an RBS is only needed if you need to limit access to project or resource data based on some kind of structure. This structure is almost always an organizational structure.

    • Organization 1
      • 1.1
        • 1.1.1
        • 1.1.2
      • 1.2
        • 1.2.1
    • Organization 2
      • 2.1
        • 2.1.1
      • 2.2
        • 2.2.1

    For example if you need to make sure that a Project Server user who sits at 1.2 on the org structure can ONLY see Projects that are managed by or worked on by users at or below 1.2 or a user who sits at Organization 2 cannot see Projects inside Organization 1 then you need to have an RBS in place.

    When you Don’t Need RBS

    If your security needs are based on role rather than on organization then your don’t need RBS. An example of this is when Project Managers need Write access to their own projects and read access to all other projects and other roles such as managers need read access to all projects. So if the organization a user is in does not have a direct impact on the projects or resources they can see then you don’t need an RBS.

     

    For sure there are shades of several colors here but this is the gist. I look forward to your comments.

  • old projectified

    Quick and Dirty Schedule Auditing

    • 0 Comments

    Here is some starter code for doing quick checks of the tasks in a project. This code will create a ‘report’ that shows the tasks that have estimated durations, tasks that are not fixed work and tasks that do not have any resources assigned. It also collects the names of resources that are not assigned to any tasks.

    It should be noted that there are real products out there like QuantumPMs Quantum Schedule Auditor that does this in a much more sophisticated way (you should check out that product if you need to do more systematic and regular auditing.)

    But that said if you need to do quick checks here is some code that shows some sample checks and a way to put the results into the clipboard so you can paste it into Word or Excel.

    It is possible to have all the report building stuff on one big line but I like to break this kind of thing out on several lines. It makes it easier to add new stuff into the middle of the report.

    Sub ProjectChecker()
    Dim t As Task
    Dim r As Resource

    Dim EstimatedDurCount As Integer
    Dim EstimatedDurTask As String

    Dim NotFixedWorkCount As Integer
    Dim NotFixedWorkTask As String

    Dim NoResourceAssignedCount As Integer
    Dim NoResourceAssignedTask As String

    Dim ResWithNoAssignCount As Integer
    Dim ResWithNoAssignResource As String

    Dim Report As String
    Dim MyData As DataObject
    Set MyData = New DataObject

    For Each t In ActiveProject.Tasks
        If Not (t Is Nothing) Then
            If t.Estimated = True And t.Summary = False Then
                EstimatedDurCount = EstimatedDurCount + 1
                EstimatedDurTask = EstimatedDurTask + t.Name & Chr(13)
            End If
            If t.Type <> pjFixedWork And t.Summary = False Then
                NotFixedWorkCount = NotFixedWorkCount + 1
                NotFixedWorkTask = NotFixedWorkTask + t.Name & Chr(13)
            End If
            If t.Milestone = False And t.Summary = False And t.Resources.Count = 0 Then
                NoResourceAssignedCount = NoResourceAssignedCount + 1
                NoResourceAssignedTask = NoResourceAssignedTask + t.Name & Chr(13)
            End If
        End If
    Next t

    For Each r In ActiveProject.Resources
        If Not (r Is Nothing) Then
            If r.Assignments.Count = 0 Then
                ResWithNoAssignCount = ResWithNoAssignCount + 1
                ResWithNoAssignResource = ResWithNoAssignResource + r.Name + Chr(13)
            End If
        End If
    Next r

    'Building Report
    Report = "Project Name: " & ActiveProject.Name & Chr(13) & Chr(13)
    Report = Report & "**** Tasks Section ****" & Chr(13)
    Report = Report & "Count of tasks with Estimated Durations: " & EstimatedDurCount & Chr(13)
    Report = Report & EstimatedDurTask & Chr(13)
    Report = Report & "Count of tasks that are NOT Fixed Work: " & NotFixedWorkCount & Chr(13)
    Report = Report & NotFixedWorkTask & Chr(13)
    Report = Report & "Count of tasks without a resource assignment: " & NoResourceAssignedCount & Chr(13)
    Report = Report & NoResourceAssignedTask & Chr(13)
    Report = Report & Chr(13) & "****Resource Section****" & Chr(13)
    Report = Report & "Count Resources with No Assignments: " & ResWithNoAssignCount & Chr(13)
    Report = Report & ResWithNoAssignResource & Chr(13)

    MyData.SetText Text:=Report
    MyData.PutInClipboard

    End Sub

  • old projectified

    Moving Tasks With VBA

    • 1 Comments

    So the problem was that a customer wanted to be able to move a task that was at ID 7 and move it so that it was at ID 2. Sadly, VBA for Project does not contain a Task.Move method. But with a little bit of code around them you can use a Cut and Paste methods for Rows.

    The example below assumes that you know the name of the task you want to move and the name of the task that currently occupies the row where you want to move the first task.

    Here is a sample task list. This sample is a good test because the tasks are out of ID order. The task I want to move (name = 7) is in ID position 3 and I want to move it to where Task 2 is now (currently in ID position 9.)

    image

    Sub TaskMover()
    Dim t As Task
    Dim NewID As Integer

    For Each t In ActiveProject.Tasks
        If Not (t Is Nothing) Then
            If t.Name = 2 Then
                NewID = t.ID
            End If
            If t.Name = 7 Then
                SelectRow Row:=t.ID, Rowrelative:=False
                EditCut
            End If
        End If
    Next t

    SelectRow Row:=NewID, Rowrelative:=False
    EditPaste

    End Sub

     

    This code is not very elegant in that it requires us to select a row and then cut it and then select another row and then paste it. It also requires that the view in the activewindow is a Task view. There is some code we can use to test to make sure the view is the right type. “ActiveWindow.TopPane.View.Type” should be “0” or “pjTaskItem”. So it is not perfect but it gets the job done. You can use this as a starting point for your own needs.

    So the new code with this view type test would look like this:

    Sub TaskMover()
    Dim t As Task
    Dim NewID As Integer
    If ActiveWindow.TopPane.View.Type = pjTaskItem Then
        For Each t In ActiveProject.Tasks
            If Not (t Is Nothing) Then
                If t.Name = 2 Then
                    NewID = t.ID
                End If
                If t.Name = 7 Then
                    SelectRow Row:=t.ID, Rowrelative:=False
                    EditCut
                End If
            End If
        Next t
        SelectRow Row:=NewID, Rowrelative:=False
        EditPaste
    End If
    End Sub

  • old projectified

    TechNet Web Cast Series on Project Server 2007

    • 1 Comments

    Christophe blogged  about the new Technet web cast series being done by Michael Jordan. For those that do not know who Mike is, he pretty much holds rock star status in the Project Server world. When he talks about Project Server people stop what the are doing and start taking notes. :-)

    The series includes the following topics:

    Microsoft Office Project Server 2007 - Solution Overview and System Elements

    Microsoft Office Project Server 2007 - Solution Elements and Data Flow

    Microsoft Office Project Server 2007 - Workload Scenarios and Reference Architecture

    Microsoft Office Project Server 2007 - Network Communication

    Microsoft Office Project Server 2007 - Server Administration

    Microsoft Office Project Server 2007 - Maintenance and Monitoring

    Microsoft Office Project Server 2007 - Deployment into a SharePoint Server Intranet Farm

    Microsoft Office Project Server 2007 - Disaster Recovery

    Microsoft Office Project Server 2007 – Virtualization

     

    Visit Christophe’s blog for the details and then mark your calendar.

  • old projectified

    Video Blog Post on Task Options in Project Server 2007

    • 0 Comments

    Treb has posted a great video of the options that effect My Tasks.

    Check it out.

  • old projectified

    The Amazon Kindle Is Very Cool

    • 0 Comments

    The Amazon Kindle is quite possibly the coolest piece of hardware I have owned since I got my first laptop. Seriously. As an often on the road consultant it has changed my life. I read a lot. Generally 2 or 3 books a week. Doing this with printed books was always an exercise in, well in exercise. Being on the road also left little time to actually go shopping for books. To  be honest I was never a big fan of Amazon.com except for those books that were never to be found in an actual book store. Shopping in a real book store, while the only kind of shopping I actually like took too much of my precious at home time since I’m on the road so much. Enter the Kindle. As small as trade paperback book it solved the problem of walking around with one shoulder lower than the other. It has a built in wireless data connection that uses (I think) the Verizon network. This means that i can shop the Amazon store from the device, buy a book and get it on my device in under 5 mins. You can also get newspapers (NY Times, Boston Globe, Washington Post, etc), magazines like The Atlantic Monthly, The Nation, and Time. These get delivered automatically via the ‘Whispernet’ connection on the device.

    Then there is the price of books. Best sellers are $9.99. Since the price of hardcover new releases has been creaping up toward $30 this is a big deal. What it means is that the price of the Kindle ($359) is made up for after 24 new release books. For me that is about six months (I read 2 or 3 books a week but not all of them are new releases.) After that I’m saving $15 every time I buy a new release. So far the average price seems to be about $9.99. Many are cheaper (lots of classics are $1.99 to $3) and there are some more scholarly\obscure  books are priced more comparably with their print counterparts. For example, I’m reading a book on IT Portfolio Management that cost me $29 on the kindle while the print edition is $32.97.

    There are people that are upset with the Kindle because of its design. Sure I think the buttons could be better placed. But I got used to the placement after about an hour. There are others that don’t like that you cannot give the book away or print it. I would certainly prefer I could do this but as someone that has written a book and then seen it downloadable for free before I even made back my advance I can understand the desire of an author or publisher to control access to their product.

    So if you are on the road and love to read this device deserves a good look.

  • old projectified

    Project Server with Excel Services

    • 0 Comments

    Treb’s Business Intel group on the Product Team has developed some instructions for setting up Excel Services with Project Server.

    Check it out.

  • old projectified

    EPMU Developer Course Offering

    • 0 Comments

    http://www.msepmu.com/developer.htm

     

    4 Day course with hands on labs and solid coverage of developing around Project Server

  • old projectified

    Project Server “Infrastructure Update” Client Version Numbers

    • 0 Comments

    After you install the Infrastructure Update for Project Server these are the versions you will see on the client.

    In IE you will see these two ActiveX controls:

    Control                 Version                                ID

    PJ12ENUC           12,0,4518,1014                  {D5B680E5-9C5F-45E0-A97C-521D4F281173}

    PJAdoInfo4         12,0,6320,5000                  {E3089160-E8AD-4C5B-B47C-ADDF3DF660DD}

     

    In the Project Professional version in Help | About: 12.0.6318.5000  SP1 MSO (12.0.6218.1000)

  • old projectified

    New Disaster Recovery Info on TechNet

    • 0 Comments

    If you deploy or manage a deployment of Project Server 2007 you should read this new content:

    image

  • old projectified

    No Thanks, I’ll Be Having the Crow

    • 0 Comments

    File this under reason 467 why I don’t make my living as a full time developer.

    Yesterday I posted some code for parsing out a comma delimited text field, such as a multi-value enterprise field in Project Server 2007.

    Today a real developer pointed out that there is a function that does the same thing as my code. DOH!

    So here is the new code, most of which is just there to display the results of the function.

    Sub Doh()
    Dim count As Long

    Dim Values As Variant

    Values = Split(ActiveProject.Tasks(1).Text1, ",")

    'just for display
    For count = 0 To UBound(Values)
        Debug.Print Trim(Values(count))
    Next count
    '----------------
    End Sub

  • old projectified

    Deployment Practices: Configuration >< Process

    • 0 Comments

    It is easy for users new to a system like Project Server to see the configuration of fields, views, reports and security as the whole picture of doing a deployment of Project Server. It is also easy to see why there might be this confusion. On the surface it makes sense. You look at the processes in an organization and then you look at security, reports, views, and fields, etc and then configure the tool to match. Easy, right? Not so much.

    Doing a deployment of project management software well is not that simple. You need to examine how the tool will be used, how projects get managed, how tasks get estimated by PMs and how resources are assigned. If several PMs define their tasks very tightly (short durations with high resource units) while others define theirs more loosely (longer durations with low resource units) it has an impact on how the data can be analyzed across projects. With the tighter scheduling there can be higher risk of slip but with the looser scheduling the data provides less certainty about where you can put new tasks or projects into the system. I’m not passing judgement on either method there are pros and cons to both. My point here is that this is an example of how the way the tool will be used needs to be taken into account when helping the customer understand how other areas of the tool can be used to make decisions about things like resource allocations or the adding of new projects to the mix. A good configuration is about more than just a few fields and setting up AD sync. It is about having the tool match how the organization works.

    This brings up the even bigger part: what if how they do it now is not how they want to be doing it (or even harder, how they want to be doing it but not how they SHOULD be doing it?) Now comes the rough job of helping them understand where changes can be made and how those changes can be broken down into small, more easily digestible changes and road-mapped. More later…

  • old projectified

    VBA Code For Parsing a MultiValue Text Field

    • 0 Comments

    If you are in Project Server 2007 you can have an Enterprise Text using a lookup table that can contain more than one value. If you then need to work with that field data in code (VBA or VSTO) you can use the GetField function to get the value of that field. The catch is that it is returned as a comma delimited string with all the values in it. So if your field had three values selected (Value1, Value19 and Value26) it gets returned as “Value1, Value19, Value26”.

    The code below shows how to parse this into an array where it will be easier to work with in code.

    As always, take this code and make it your own. This includes doing testing to make sure it does what it is supposed to do. It worked for me on a very limited set of test data. Don’t just throw this into production. ;-)

    Sub Parse_Comma_Delimited_Field_Into_Array()

    Dim Char As Integer
    'Char is used to hold each character in the string to see if it is a comma

    Dim WholeField As String
    'Wholefield is a string that holds the entire value of the field to be parsed

    Dim Values() As String
    'Values is the string array that will contain the parsed values

    Dim NumberofValues As Integer
    'NumberofValues holds the number of values in the 'wholefield'
    'so that the 'Values' array can be redim'd

    Dim StartofLastValue As Integer
    'holds the number of characters from the left of the string where the last
    'word started so the value can be pulled from the wholefield string and
    'placed into the array

    StartofLastValue = 1
    NumberofValues = 0

    '---Setting value of WholeField to be parsed
    WholeField = ActiveProject.Tasks(1).Text1
    '---
    If Len(WholeField) > 0 Then
        For Char = 1 To Len(WholeField)
            If Mid$(String:=WholeField, Start:=Char, Length:=1) = "," _
            Or Char = Len(WholeField) Then
                NumberofValues = NumberofValues + 1
                ReDim Preserve Values(1, NumberofValues)
                If Char < Len(WholeField) Then
                    Values(1, NumberofValues) = Trim(Mid$(String:=WholeField, _
                    Start:=StartofLastValue, Length:=Char - StartofLastValue))
                Else
                    Values(1, NumberofValues) = Trim(Mid$(String:=WholeField, _
                    Start:=StartofLastValue, Length:=Char - (StartofLastValue - 1)))
                End If
                StartofLastValue = Char + 1
            End If
        Next Char
        '-------------------------
            'this section just loops through and shows that the array
            'contains the correct data.
            'Remove after you are finished testing
            Dim count As Integer
            For count = 1 To NumberofValues
                Debug.Print Values(1, count)
            Next count
        '-------------------------

    End If
    End Sub

  • old projectified

    Project Server Infrastructure Update

    • 1 Comments

    <This is a reposting of content from the Official Project Blog but since it is a pretty important item I am reposting completely.>

    Introduction

    On July 15th, 2008 Microsoft announced the availability of the Infrastructure Update for Office Servers. The Infrastructure Update for Office Servers is a set of updates to improve platform performance and contain several customer driven fixes.  The updates are applicable to Microsoft Office SharePoint Server 2007, Windows SharePoint Services 3.0, Microsoft Search Server 2008 & Microsoft Search Server 2008 Express, Microsoft Office Project Server 2007 and Microsoft Office Project 2007.

    There are several noteworthy new features and fixes shipped in these updates for Project Server 2007 and Project 2007; specifically:

    Project Server

    • Timesheets and My Tasks stability and usability improvements
    • Queue Management user interface improvements
    • Logging Tracing improvements
    • Project Server performance improvements
    • Project Server 2003 to Project Server 2007 migration fixes
    • Database performance improvements to enhance the cube building process and Project Professional Save/Publish scenarios

    Project Professional

    • Cost Resources calculation fixes
    • Improved Custom Fields stability
    • Improved local Project Cache stability
    • Fixed Excel Import problem

    Please read Project 2007 Infrastructure Update Release for Server and Client to learn about its content in detail.

    The Infrastructure Updates are available as free downloads to customers via the download center on http://www.microsoft.com/download.

    Before you install the Infrastructure Update there are some very important things to understand.  In this post we'll try to provide you with the resources you need to be successful in your updates.  It is essential that you understand the appropriate links, and thoroughly read the guidance and test out the patch in a separate environment prior to a production rollout.

    Full installation instructions and guidance is provided in the Knowledge Base articles linked from the download pages for each update along with existing TechNet guidance for patching Office Servers.  The links are also included further on in this Q&A, but for reference, the following products require the following updates to be applied.

    • If you are running SharePoint Server 2007 you should install the Infrastructure Update for Windows SharePoint Services 3.0 (KB951695) first and the Infrastructure Update for Microsoft Office Servers (KB951297) second.
    • If you are running Project Server 2007 you should install the Infrastructure Update for Windows SharePoint Services 3.0 (KB951695) first and the Infrastructure Update for Microsoft Office Servers (KB951297) second.  You should also then install the Infrastructure Update for Microsoft Office Project 2007 (KB951547) on all Project 2007 client PC’s.

    Read more about the new SharePoint features here

    Read more about the new Search features here

    Read more about the Content Deployment updates here

    Knowledge Base Articles

    Infrastructure Update for Windows SharePoint Services 3.0

    KB951695 http://support.microsoft.com/kb/951695

    Infrastructure Update for Microsoft Office Servers

    KB951297 http://support.microsoft.com/kb/951297

    Infrastructure Update for Microsoft Office Project 2007

    KB951547 http://support.microsoft.com/kb/951547

    List of Fixes

    Infrastructure Update for Microsoft Office Project 2007

    KB953751 http://support.microsoft.com/kb/953751

    Infrastructure Update for Windows SharePoint Services 3.0

    KB953749 http://support.microsoft.com/kb/953749

    Installation Instructions

    It is strongly recommended that you install Windows SharePoint Services 3.0 Service Pack 1 and Office Servers Service Pack 1 before installing the Infrastructure Update for Microsoft Office Servers (KB951297) and the Infrastructure Update for Windows SharePoint Services 3.0 (KB951695).

    The installation process will incur server and farm downtime that you will need to plan for – the updates should be installed on all servers in a farm.

    Downloads

      x64 x86
    Infrastructure Update for Windows SharePoint Services 3.0 (KB951695) http://www.microsoft.com/downloads/details.aspx?FamilyId=3A74E566-CB4A-4DB9-851C-E3FBBE5E6D6E&displaylang=en http://www.microsoft.com/downloads/details.aspx?FamilyId=256CE3C3-6A42-4953-8E1B-E0BF27FD465B&displaylang=en
    Infrastructure Update for Microsoft Office Servers (KB951297) http://www.microsoft.com/downloads/details.aspx?FamilyId=6E4F31AB-AF25-47DF-9BF1-423E248FA6FC&displaylang=en http://www.microsoft.com/downloads/details.aspx?FamilyId=3811C371-0E83-47C8-976B-0B7F26A3B3C4&displaylang=en
    Infrastructure Update for Microsoft Office Project 2007 (KB951547) http://www.microsoft.com/downloads/details.aspx?FamilyId=F385ADB8-0425-4BA4-BECE-7664B8F49D12&displaylang=en

    Frequently Asked Questions

    Q: Is Office Servers Service Pack 1 (SP1) a prerequisite or installed as part of this fix?
    A: No.  Our supportability commitments to customers include providing the ability to install hotfixes on the two most recent versions of a product, in this case RTM and SP1.  So installing these updates directly onto an RTM server is not blocked and will install some of the fixes shipped in Office Servers Service Pack 1, but only those that are contained in files that are changed by the Infrastructure updates.

    Q: Can I uninstall the server updates?
    A: No.  The Infrastructure Update for Microsoft Office Servers (KB951297) and the Infrastructure Update for Windows SharePoint Services 3.0 (KB951695) cannot be uninstalled.  Both updates make database schema changes.

    Q: Can I install the “Infrastructure Update for Microsoft Office Project 2007 (KB951547)” Project 2007 client update without installing the “Infrastructure Update for Microsoft Office Servers (KB951297)” on the server?
    A: Yes, the “Infrastructure Update for Microsoft Office Project 2007 (KB951547)” includes fixes for both client/server communication and local client features, so if you don’t have Office Project Server 2007 but use Office Project 2007 client this update can be safely installed and you will be able to take advantage of all the client updates.

    Q: Where can I find information on Service Pack 1 for Project Server and Project Professional 2007?

    A: Please check the following: http://blogs.msdn.com/chrisfie/archive/2007/12/12/announcing-the-release-of-epm-2007-service-pack-1.aspx

    Q: What if I have an issue that isn’t addressed by this update?
    A: If your customer has a specific issue that these updates do not address you should follow the Microsoft Support process to log the issue and request a hotfix.

  • old projectified

    Shot at Visualizing an “SBS”

    • 2 Comments

    Clearly a single strategy can be served by many projects and a single project can serve many strategies. The discussions I have had both in the comments of my previous strategy breakdown structure posts and in the emails I have received have brought up some very interesting points. I have gone from liking the idea of linking strategy directly to "elements" within a single project to thinking it was unnecessary and cumbersome and now back to liking the idea again!

    I think there could be some really cool outcomes not only for the Organizational Strategy side of the house or the Portfolio Alignment side of house but also for the "PM or team member that just wants to have a better picture of where their hard work fits into the big picture" side of the house as well.

    Strategy "Down" to Project Visualization

    Strategy-Deliverable Alignment
    Linkages from Strategy "Down"

    This would provide the organization with a more detailed picture of how strategies are being made to come true via projects and the deliverables of those projects. Linking specific deliverables to the strategy instead of the traditional method of linking whole projects requires a more detailed thought process to be involved. Whole projects would not be just dropped in the "Strategy A" bucket. Instead finite parts of the project would need to be analyzed as to how they support a strategy.

    Project "Up" to Strategy

    Deliverables to Strategy
    Linkages from the Project "UP"

    This way of looking at the relationships offers a different perspective. This diagram would be useful for PMs and team members to more easily visualize how their project and even their particular part of a project supports the overall organizational strategy.

    The other thing it would do would be to provide an interesting 'scope check' early in the project. Notice that the deliverables are not only numbered but they are numbered within a set of 4. Where is Deliverable 2? The question would be..."If Deliverable 2 does not directly support a strategy why is it there?" Certainly there are valid answers to this question. This is not to say that just because it does not have a direct strategy link that it should be removed but there is value in the question and value in the process required to adequately answer the question. Answering these kinds of questions and making these kinds of links might force us and managers and planners to think about individual parts of our project in a different way. It might make us examine our scope and our deliverables and the usage of our teams in a different ways. On the 'other side' of this same coin it might make us think about our strategies in different ways as well.

    I very much want your thoughts on this. Please email me with your thoughts. I will NEVER share your name or contact info with anyone without first getting your specific approval.No details about your company, your name or your clients will ever be posted here without your specific approval.

    Possible problems with the approach that need to be addressed

    Nothing is perfect. There are issues with this approach

    1. Breaking deliverables up and linking them directly may hide the fact that a project is not generally a disconnected set of unrelated deliverables. Tracking any one deliverable as being 'the' part of the project that supports a given strategy may not be effective in communicating the importance of the other deliverables. It would be important to ensure that this approach (of linking deliverables to strategies) was used with the right caveats and within a context of understanding the importance of the whole.
    2. It requires a project organization methodology that contains "deliverables". In my opinion this is the ONLY way to organize a project but there are those that disagree. This approach would only work if your project was organized into chunks that could be linked 'UP'.
    3. It implies Big Up Front Planning (maybe). This approach could be seen as being supportive only of "traditional" PM methods, which is to say it could be seen as NOT supporting the more "Agile" methods.
    4. Any More? Email me PLEASE. I want to know what is wrong just as much as I want to know what is right! :-)
  • old projectified

    SBS Taxonomy

    • 0 Comments
    2nd old Strategy Breakdown Structure post…

    OK so I will take a first shot at what the levels of the SBS would look like.

    Strategic Initiative
            Objective
                    Program
                            Project
                                    WBS

    Just a shot into the thin air. How do you all (all 18 of you LOL) see this working? How would you like to see these levels broken down?

    Do you see this kind of expansion of the strategic alignment idea as being useful? Is there value in breaking a strategic initiative down into chunks smaller than the initiative itself but yet still larger than the projects that support that initiative?

Page 2 of 3 (52 items) 123