Christophe Fiessinger's Blog
Updates on Microsoft's Enterprise Social Networking (ESN) and Project Portfolio Management (PPM) offerings

  • Christophe Fiessinger's Blog

    Customizing Analysis Services Cube Using Analysis Management Objects (AMO)

    This post describes the steps required to perform SQL Analysis Services 2005 Project Server 2007 Cube customization using Analysis Management Objects (AMO).

    (sample code below)

    THE CODE

    References

    To be able to override an EPM 2007 Event Handler and do AMO customization you will have to add the following references to the C# Class Library solution:

    ¾  C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.AnalysisServices.dll

    ¾  C:\Program Files\Microsoft Office Servers\12.0\Bin\Microsoft.Office.Project.Server.Events.Receivers.dll

    ¾  C:\Program Files\Microsoft Office Servers\12.0\Bin\Microsoft.Office.Project.Server.Library.dll

    Event Handler

    The CubeProcecessedEvent is overridden to launch our Analysis Services Cube customization once the standard EPM 2007 cube has been built:

        // Override CBS event to call custom AMO code

        public class CubeProcessedEvent : CubeAdminEventReceiver

        {

            #region Public Methods

     

            public override void OnCubeProcessed(PSContextInfo contextInfo, CubeAdminPostCubeProcessEventArgs e)

            {

                base.OnCubeProcessed(contextInfo, e);

     

                // Process Analysis Services customization

                ProcessCubeCustomisation(e.DbName);

            }

     

    Retrieving AS DB Connection Strings

    // --------------------------------------------

    // STEP 0: Retrieve Analysis Services server configuration from

    // Microsoft.Office.Project.Server.Eventing.exe.config

    // --------------------------------------------

    string connectionString = ConfigurationManager.AppSettings["ASConnectionString"];

    The CONFIG file is located under: C:\Program Files\Microsoft Office Servers\12.0\Bin

    Analysis Services Cube Customization

    This is the main method doing all the Analysis Services customization (using AMO):

    private void ProcessCubeCustomisation(string databaseName)

      {

    Stopwatch timeToProcess = new Stopwatch();

    timeToProcess.Start();

    bool success = false;

    string msg = string.Empty;

     

    try

    {

        // --------------------------------------------

        // STEP 0: Retrieve Analysis Services server configuration from

        // Microsoft.Office.Project.Server.Eventing.exe.config

        // --------------------------------------------

        string connectionString = ConfigurationManager.AppSettings["ASConnectionString"];

     

        // --------------------------------------------

        // STEP 1: Connect to Analysis Services server.

        // --------------------------------------------

        Server asServer = new Server();

        asServer.Connect(connectionString);

     

        // --------------------------------------------

        // STEP 2: Locate the necessary OLAP objects.

        // --------------------------------------------

        Database p12Database = asServer.Databases.GetByName(databaseName); // this throws exception if the database is not found

        Cube mspPortfolioAnalyzer = p12Database.Cubes.GetByName("MSP_Portfolio_Analyzer");

        Dimension taskListDimension = p12Database.Dimensions.GetByName("Task List"); // this throws exception if the dimension is not found

     

        // --------------------------------------------

        // STEP 3: Perform OLAP customisation

        // --------------------------------------------

        DimensionAttribute tnDimAtt = taskListDimension.Attributes.Add("Task Name");

        tnDimAtt.Usage = AttributeUsage.Regular;

        tnDimAtt.Type = AttributeType.Regular;

        tnDimAtt.OrderBy = OrderBy.Name;

        tnDimAtt.KeyColumns.Add(CreateDataItem(p12Database.DataSourceViews[0], "MSP_EpmTask_OlapView_Dimension", "TaskName"));

        tnDimAtt.NameColumn = CreateDataItem(p12Database.DataSourceViews[0], "MSP_EpmTask_OlapView_Dimension", "TaskName");

     

        // Create Task Name Hierarchy

        Hierarchy tnHierarchy = taskListDimension.Hierarchies.Add("TaskNameHierarchy");

        DimensionAttribute tlAttribute = taskListDimension.Attributes.GetByName("Task List attribute");

        tlAttribute.AttributeRelationships.Add("Task Name");

        tnHierarchy.Levels.Add(tnDimAtt.Name).SourceAttributeID = tnDimAtt.Name;

        tnHierarchy.Levels.Add(tlAttribute.Name).SourceAttributeID = tlAttribute.Name;

     

        ValidationErrorCollection errorCol = new ValidationErrorCollection();

        taskListDimension.Validate(errorCol, true);

     

        // --------------------------------------------

        // STEP 4: Process updates

        // --------------------------------------------

        // Process dimension update

        p12Database.Update(UpdateOptions.ExpandFull);

        p12Database.Process(ProcessType.ProcessFull);

     

        success = true;

    }

    catch (Exception e)

    {

        msg = "FAILED to process AS customisation, exception: " + e.Message;

    }

     

    timeToProcess.Stop();

    if (success)

        WriteEvent("SUCCESSFULY processed AS customisation, Time= " + timeToProcess.Elapsed.ToString(), EventLogEntryType.Information, 9999);

    else

        WriteEvent(msg + " , Time= " + timeToProcess.Elapsed.ToString(), EventLogEntryType.Error, 9999);

      }

     

    DEPLOYMENT

    Event Handler with Custom AMO Code

    The procedure to deploy custom Event Handler (calling custom AMO code) is as follow:

    Register Event Handler

    1.      Connect to the PWA server and go to Server Settings

    2.      Select Operational Policies -> Server-Side Event Handler Configuration

    3.      Select Cube Admin -> Cube Processed

    Event

    4.      Enter the following information and click Save:

    Name

    Contoso Task Name Hierarchy

    Description

    Custom AMO code that aggregates tasks by name

    Assembly Name

    MicrosoftFrance.MCS.EPM2007.Events.ContosoAMO, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=9af84715c1210e08

    Classe Name

    MicrosoftFrance.MCS.P12.Events.ContosoAMO.CubeProcessedEvent

    Order

    1

    Once the assembly has been deployed it should appear as shown below (takes a few minutes to take effect).

    CustomEvent

    Deploy Custom Assembly

    1.      Copy compiled assembly MicrosoftFrance.MCS.P12.Events.ContosoAMOEvent.dll from proper BIN directory to C:\WINDOWS\assembly (Drag & Drop)

    2.      Assembly should now appear in the folder as shown below:

    Assembly

    Add Eventing Config Parameters

    1.      Copy the EPM Eventing config file located under C:\Program Files\Microsoft Office Servers\12.0\Bin\Microsoft.Office.Project.Server.Eventing.exe.config to have a backup and open the file using an XML editor

    2.      Add the following parameter: ASConnectionString

    3.      <configuration>

    4.         <runtime>

    5.            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    6.               <probing privatePath="ProjectServerEventHandlers"/>

    7.            </assemblyBinding>

    8.         </runtime>

    9.          <appSettings>

    10.             <add key="ASConnectionString" value="CHRISFIE03\SQL" />

    11.       </appSettings>   

    12.   </configuration>

    TESTING

    First you will have to the build the cube with the newly deployed customization.

    The CBS (Cube Building Process) will look like this:

    ===== Initiating cube build process =====

    [2/27/2007 8:45 AM] Cube build request message has been added to the Project Server queue

    ===== Verifying and running pre-build server event handler =====

    [2/27/2007 8:46 AM] Verifying and running pre-build server event handler

    ===== Determining database and cube structure =====

    [2/27/2007 8:46 AM] Cube build initialization started

    [2/27/2007 8:46 AM] OLAP database and cube structure was determined successfully

    ===== Building database and cubes =====

    [2/27/2007 8:46 AM] Cube build session started

    [2/27/2007 8:46 AM] Analysis Services session started

    [2/27/2007 8:47 AM] 26 of the NT accounts that correspond to users that have 'View Olap Data' permission could not be added to the Project Server default OLAP role 'ProjectServerViewOlapDataRole'

    [2/27/2007 8:47 AM] Analysis Services session completed successfully

    ===== Verifying and running post-build server event handler =====

    [2/27/2007 8:47 AM] Verifying and running post-build server event handler

    ===== Processing OLAP database =====

    [2/27/2007 8:47 AM] Process OLAP database session started

    [2/27/2007 8:47 AM] Analysis Services session started

    [2/27/2007 8:49 AM] Analysis Services session completed successfully

    ===== Verifying and running post-process server event handler =====

    [2/27/2007 8:49 AM] Verifying and running post-process server event handler

    ===== Process Completed =====

    [2/27/2007 8:51 AM] Cube build request completed successfully.

    Ensure that the newly added hierarchy has been added to the cube using Visual Studio:

    PortfolioAnalyzer

    Specifically:

    New Hierarchy

    Use Excel’s Pivot Table to validate change, for instance:

    Work the show is a task that appears in both the Boat Show and Consumer Technology Show projects:

    Time

    2007

    Values

    Row Labels

    Actual Work

    Work

    Work the show

    0

    160

    Boat Show

    0

    96

    Consumer Technology Show

    0

    64

    Grand Total

    0

    160

    That’s it!

    LESSON LEARNED

    ¾  All EPM 2007 cube customization should be tested extensively prior to any deployment into a Production environment.

    ¾  Adding custom customization at the end of the Cube Building process will also increase the time it takes to refresh the cube.

    ¾  Figuring out the proper UpdateOptions & ProcessType could be tricky at times and depending on what option you choose it will have a impact on performance

    ¾  To figure out the order in which the AMO needs to be made, open the AS db using Visual Studio, do the changes by hand, script the full AS database and check the XML changes.

    ¾  Test, test, test J

     

  • Christophe Fiessinger's Blog

    Sample COM Add-in code for Project Professional 2007

    Please find below sample code (thank you Mike Shughrue) in C# for a Project Professional 2007 COM Add-in.  This code is very similar to writing a COM Add-In Project Professional 2003. In the long term an easier way to start would be to leverage new next version of Visual Studio Tools For Office (VSTO): http://blogs.msdn.com/project_programmability/archive/2007/07/30/vsto-add-in-support-for-project-2003-and-project-2007.aspx

  • Christophe Fiessinger's Blog

    Lessons Learned from writing a PSI Extension

    After writing a PSI extension recently, Mike Shughrue and I learned the following lessons:

    ¾  Follow the deployment procedure – coding is easyJ, deploying a PSI extension requires multiple steps, follow each carefully. A good way to test if the web service is properly deployed is to type its address in IE and ensure it returns its definition.

    ¾  Locating DISCO.EXE – if you can’t find it under C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin; then install it using your Visual Studio DVD (under .NET Framework SDK -> Tools)

    ¾  Generating WSDL & DISCO files – if you get the following error when running DISCO.EXE under C:\Program Files\Microsoft Office Servers\12.0\WebServices\Shared\PSI:

    Microsoft (R) Web Services Discovery Utility

    [Microsoft (R) .NET Framework, Version 2.0.50727.42]

    Copyright (C) Microsoft Corporation. All rights reserved.

    ERROR: http://chrisfie03:8181/_vti_bin/PSI/reporting.asmx

      - The document at the url http://chrisfie03:8181/_vti_bin/PSI/reporting.asmx was not recognized as a known document type.

    The error message from each known type may help you fix the problem:

    - Report from 'http://chrisfie03:8181/_vti_bin/PSI/reporting.asmx' is 'The document format is not recognized (the content type is 'text/html; charset=utf-8').'.

    - Report from 'DISCO Document' is 'Discovery document at the URL http://chrisfie03:8181/_layouts/error.aspx?ErrorText=File Not Found. could not be found.'.

      - The document format is not recognized.

    - Report from 'WSDL Document' is 'The document format is not recognized (the content type is 'text/html; charset=utf-8').'.

    - Report from 'XML Schema' is 'The document format is not recognized (the content type is 'text/html; charset=utf-8').'.

     

    If you would like more help, please type "disco /?".

     

    The workaround is to create an IIS Virtual Directory under a site which is not managed by SharePoint Services V3, for instance “Test”, copy the ASMX in that directory and run this command instead:

    disco" http://chrisfie03:81/test/reporting.asmx

    Then copy the DISCO and WSDL files in the proper directory and follow the rest of the procedure to adapt the files to SharePoint V3.

    ¾  Automatically generate and deploy the DISCO and WSDL files – you could skip the steps above and use the following tool to automatically generate the two files and do the proper XML replacement: SharePoint Web Service DISCO and WSDL Generator

    ¾  Reading PSI configuration settings – Ideally the configuration settings such as database connection strings, impersonation parameters should not be hard coded in the C# for ease of deployment and maintenance. In our example the settings are defined in an application settings XML file (located under C:\Program Files\Microsoft Office Servers\12.0\WebServices\Shared\PSI) and the settings are set in the constructor of the WS. Another way to do it would be to store the settings in the web.config but he could not get it to work..

    ¾  Validate authorisation from all method call – to ensure that the EPM security is enforced each PSI calls validates the user using such algorithm:

    private bool IsAuthorized(Guid userGuid)

        {

            bool isAuthorized = false;

            try

            {

                Reporting.wsResource.ResourceAuthorizationDataSet resAuthDS = resource.ReadResourceAuthorization(userGuid);

                Reporting.wsSecurity.SecurityGroupsDataSet secGrpDS;

     

                foreach (Reporting.wsResource.ResourceAuthorizationDataSet.GroupMembershipsRow dr in resAuthDS.GroupMemberships.Rows)

                {

                    secGrpDS = security.ReadGroup(dr.WSEC_GRP_UID);

                    if (secGrpDS.SecurityGroups[0].WSEC_GRP_NAME == SEC_GROUP)

                    {

                        isAuthorized = true;

                        break;

                    }

                }

            }

            catch

            {

                // Eat the exception and return false.

            }

            return isAuthorized;

        }

  • Christophe Fiessinger's Blog

    Scenarios for PSI Extension

    The Project Server Interface (PSI) for Microsoft Office Project Server 2007 can be extended with custom Web services. PSI extensions tightly integrate with Project Server, can call other PSI methods, and can use the same security infrastructure that the rest of the PSI uses. The following article in the SDK describe how to perform a PSI extension: Walkthrough: Creating a PSI Extension - http://msdn2.microsoft.com/en-us/library/bb428837.aspx

    Mike Shughrue and I recently did a presentation on this subject and we came up with the following reasons why one might consider such customisation:

    1.      Mining data from the Reporting database – create a custom web service that return the exact data you are interested in and call that WS from your favourite reporting tool (Excel, Reporting Services ...)

    2.      Mining data not in the Reporting database – not all EPM data reside in the Reporting database, for instance you could retrieve the timesheet audit data from the Published database.

    3.      Real time data – Let’s say the cube building service is schedule every night at 2am and you are doing your financial closing and you need the latest project data from the Reporting database right away; a PSI extension could address that need.

    4.      Consolidating information from multiple data sources (EPM, line-of-business …) – for instance you want to extract Actual Work data and match timesheet line to account code from your external accounting system. You could have an account to TS line mapping table in the Reporting database and pull the data with the corresponding mapping.

    5.      Performing impersonation for specific jobs – for instance users who are not part of the EPM resource pool need to access data from the Reporting database. External suppliers/consultant or someone from another department, an accountant for instance needs to query the actual work entered by EPM resources for the current billing cycle. Since these people are not part of the EPM resource pool you could create a specific user that has only access to that PSI extension (via and EPM security group).

    6.      Integration with line of business applications – third party application can easily “pull” data from EPM 2007 by calling a PSI extension with the data in the correct format. For instance a timesheet extract could contain all relevant information in the proper format for the LOB to “consume” it.

     

    I am sure there are other reasons why one might consider PSI extension so feel free to respond to this post.

    Next I will a post a “lessons learned when creating a PSI extension”.
  • Christophe Fiessinger's Blog

    Publishing and Synchronizing Excel 2007 Tables to SharePoint Lists

    Excel 2007 Add-in: Synchronizing Tables with SharePoint Lists:

    http://www.microsoft.com/downloads/details.aspx?familyid=25836E52-1892-4E17-AC08-5DF13CFC5295&displaylang=en

    This add-in accompanies the MSDN article "Publishing and Synchronizing Excel 2007 Tables to SharePoint Lists", available in the Related Links section. The add-in allows you to publish a read-write list to Windows SharePoint Services.

  • Christophe Fiessinger's Blog

    Managing Project Professional’s Active Cache Size and Location

    Two parameters help you manage the size and location of Project Professional 2007’s Active Cache (HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\MS Project\Settings):

    1.    CacheLocation

    2.    CacheSizePerProfile

    These two parameters are also accessible via Project Pro’s menu: Tools -> Local Project Cache -> Cache Settings

    It is thus recommended to control via a Group Policy Object (GPO) these two parameters specially when Proj Pro. is deployed in a Terminal Server/Citrix environment.

    For more information on how to use GPO with Office 2007 please refer to the following documents:

    ¾  Enforce settings by using Group Policy in the 2007 Office system

    http://technet2.microsoft.com/Office/en-us/library/9df1c7d2-30a9-47bb-a3b2-5166b394fbf51033.mspx?mfr=true

    ¾  2007 Office System Administrative Templates (ADM)

    http://www.microsoft.com/downloads/details.aspx?FamilyID=92d8519a-e143-4aee-8f7a-e4bbaeba13e7&displaylang=en

    Please note 200MB is the minimum recommendation for the Cache Size Limit.

  • Christophe Fiessinger's Blog

    EPM is an Enterprise Application that Requires Enterprise Resources!!!

    Yes EPM (Enterprise Project Management) is an Enterprise application and it needs to be treated as such with Enterprise Resources J Oxford English Dictionary’s definition of Enterprise is a project or undertaking, especially a bold one.

    I often compare an EPM deployment to other enterprise application such as SAP in the ERP space or Siebel in the CRM space. Companies typically never roll out these applications in a Production environment overnight. Companies get experts involved to help them define the best Architecture based on their functional and technical requirements. Companies also put in place multiple environments (typically three: development, Integration, Production); process are put in place to define the usage of each and how changes are applied from one to the other. Server and desktop deployment procedures are documented and reviewed. An Operation Guide specific to the company’s environment and architecture is written. A Disaster Recovery Guide is written to address any platform un-planned downtime. Last but not least company resources are trained on the new solutions & technologies deployed so that they are autonomous and can do basic troubleshooting.

    Quite often I visit customers that deploy EPM like a desktop product and treat it as such. Yes it is very easy to install EPM with couple clicks on server in a Pilot or Production environment (my record is 30min for EPM 2007 with the all pre-requisites pre-installed), however the project does not end after PWA pages gets displayed and the OLAP cubes gets refreshed.

    From experience all Enterprise EPM deployment requires the following Enterprise Resources:

    ¾  Architecture study: don’t just read our prescriptive guidance on TechNet to define the physical architecture that fits your functional and technical requirements. It’s a good start but not enough from experience. Get a skilled external EPM Architect to assist you in this study. He will bring experience from other architecture recommendation and deep product knowledge to make the best architecture recommendation for today’s volumes and usage but also taking into consideration future changes in usage/volume/product.

    ¾  Deployment Guide: the deployment procedures for both the servers and the desktop needs to be documented in detail with you company’s specific architecture and constraints.

    ¾  Operation Guide: there is no reason why every EPM deployment should not have one. Areas it should contain for instance: maintenance plans for IIS, SQL, performance counters to track... Again getting an EPM expert to help you write one is the safest route in the long term.

    ¾  Disaster Recovery Plan: even if you have a single server deployment you should have one. In case of a hardware/software failure or both an administrator should know what to do anytime of the day, any day of the week without calling Microsoft/a Partner … For large deployment with high availability including Network Load Balancing, and Clustering technologies it’s a must!

    ¾  Multiple Environments: very often customer plan for one environment (their Production environment) during a deployment. They then start customizations and start applying them directly in Production without any prior validation on a separate environment (Integration for instance). If customizations are perfect and bug free then everyone is happy but if it’s not the case the production environment goes down and the EPM users might not be happy! Similarly changes in architecture for instance SAN disk changes should be validated prior on a separate environment and should not be rolled out in production unless it has been validated (+ it should not be rolled out during working hours!).

    ¾  Optimum SAN configuration: too often SQL data is either not stored on a SAN or worst stored on a SAN but not optimized. Get a specialist to review your setup and ensure you have the best configuration.

    ¾  Skilled Employee: for instance since EPM and SharePoint data are all stored in a MS SQL database it’s key to understand well SQL 2000/2005. Database administrators should be able to put together a maintenance plan, optimize disk configuration, understand SQL performance counters and do basic troubleshooting using the SQL Server Profiler or SQLIO. Also administrators of the solutions should be knowledgeable of Windows 2003, Internet Information Services (IIS), .NET 2.0/3.0, Terminal Server/Citrix if used, and last but not least they should all have a basic understanding of the EPM solution, it is architecture and each component (services, databases …). If a company does not have these skills or want to refresh them, get an expert to train your employees or send them to training events.

  • Christophe Fiessinger's Blog

    Impact of Latency on Project Professional 2007

    Please find below a study I did for a customer to demonstrate the advantage of the new EPM 2007 architecture and specifically how Project Professional 2007 communicates to the application server.

    DISCLAIMER: the times presented below highly depend on the EPM Architecture, the project plan data, as the network between the test machine and the servers, as well as the testing methodology. There is thus no guarantee on the response time in your environment!

     

    EXECUTIVE SUMMARY

    Contoso is a worldwide company with many branch offices and is considering a migration from Project Server 2003 to Project Server 2007 but requires reassurance that the newer version of EPM would handle high latency environment when using Project Professional 2007. Contoso uses a Citrix farm today to address the latency issues of Project Professional 2003.

    The results showed that Project Professional 2007 runs fine under a high latency environment thus Contoso can migrate from EPM 2003 to EPM 2007 and not use a Citrix farm anymore to run Project Professional.

    TEST ENVIRONMENT

    EPM 2007 Architecture

    Project Server 2007 was installed on a single server (including SQL 2005) with the following specifications:

    Hardware

    ¾  Computer modem:     Dell Power Edge 2850

    ¾  Processor:                Dual proc Xeon 3.6 Ghz

    ¾  System memory:       4 Go, FSB 800 Mhz

    ¾  Hard drive:               36 Go Ultra Scsi 320 15000 rpm

    Software

    ¾  Windows 2003 R2, Enterprise Edition US + SP1

    ¾  SQL Server 2005, Enterprise Edition US + SP1

    ¾  Project Server 2007, x86 EN

    Test Framework

    The EPM Test Framework (EPMTF) was used to automate the testing process of the Project Professional 2007.

    The EPMTF ran on a Dell Latitude D600 laptop with 2 Go RAM; Pentium 1,7GHZ & 7200 rpm hard drive running Windows Server 2003 + SP1.

    No latency simulation tool were used and instead a true 120 ms latency was generated by accessing an EPM 2007 server located at the MS France lab and accessing it from home via a VPN connection.

    Test Data

    ¾  Contoso gave us a generic project plan used to track “business as usual” activities.

    ¾  This initial plan contained the following:

    ¾  440 tasks

    ¾  10 projects Enterprise Custom Fields

    ¾  10 resource Enterprise Custom Fields

    ¾  5 task Enterprise Custom Fields

    ¾  5 resources

    ¾  1 to 5 resource assignment per task

    ¾  No baseline

    To simulate the impact of project size we multiplied the total number of tasks for each run as shown below, total number of tasks per run:

    1.      444

    2.      877

    3.      1304

    4.      1733

    5.      2160

    Use Case

    Only one use case was tested, it included the following actions:

    1.      Start Project Professional 2007 and open project plan

    2.      Add one task at the end of the project plan

    3.      Save project plan

    4.      Publish project plan

    5.      Close project plan

    TEST RESULTS

    Response Time

    Average response time in milliseconds for five runs for each action and each project size with 120ms latency:

    Total Number of Project Tasks (results in ms)

     

    444

    877

    1304

    1733

    2160

    Open

    7 415

    7 283

    7 645

    7 782

    8 533

    AddTask

    78

    188

    313

    570

    464

    Save

    1 883

    2 438

    3 003

    3 426

    5 486

    Publish

    5 672

    5 993

    5 628

    5 534

    3 057

    Close

    1 781

    1 289

    1 086

    1 138

    1 157

    The following observations can be made from the results above:

    ¾  The time to Open a plan “stays” under 10 seconds which is acceptable.

    ¾  Close & Publish actions are not impacted by the project size (number of tasks).

    Active Cache

    The following table shows the percentage gain (compared to the table above) obtained by using the Active Cache when performing each action:

    Total Number of Project Tasks

    444

    877

    1304

    1733

    2160

    Open

    33%

    79%

    127%

    188%

    255%

    AddTask

    -35%

    -58%

    7%

    -64%

    -15%

    Save

    6%

    -2%

    -2%

    0%

    -30%

    Publish

    -5%

    -13%

    -9%

    -11%

    68%

    Close

    -54%

    7%

    127%

    111%

    293%

    The following observations can be made from the results above:

    ¾  As expected the AC has mostly an impact when opening the project plan.

    ¾  AC does generate significant time improvement as the project plan increases in size.

    Raw results (in milliseconds):

    Total Number of Project Tasks (results in ms)

     

     

    444

    877

    1304

    1733

    2160

    Open

    Active Cache

    7,415

    7,283

    7,645

    7,782

    8,533

     

    No Active Cache

    9,852

    13,052

    17,372

    22,425

    30,293

    AddTask

    Active Cache

    78

    188

    313

    570

    464

     

    No Active Cache

    51

    79

    336

    207

    394

    Save

    Active Cache

    1,883

    2,438

    3,003

    3,426

    5,486

     

    No Active Cache

    2,003

    2,377

    2,952

    3,440

    3,827

    Publish

    Active Cache

    5,672

    5,993

    5,628

    5,534

    3,057

     

    No Active Cache

    5,407

    5,200

    5,132

    4,915

    5,120

    Close

    Active Cache

    1,781

    1,289

    1,086

    1,138

    1,157

     

    No Active Cache

    818

    1,380

    2,465

    2,398

    4,541

     

    CONCLUSION

    Opening/Publishing/Saving actions in Project Professional 2007 are well under 10 seconds with 120ms latency; the responses time are thus acceptable.

    The new Project Server 2007 architecture introduces significant improvement in performance when using Project Professional in a high latency environment. The performance improvement is mainly due to the fact the data access layer was rewritten to use web services to access the database instead of ODBC connections (EPM 2003). 

    Active Cache does provide further performance improvement when opening a large project plan after it has been open once before (cached copy of project plan is created the very first time a plan is open).

    In theory Contoso does not need to setup a Citrix farm to use Project Professional 2007 from a performance point a view but might still require it if the client desktop does not meet the Office 2007 minimum requirements of XP SP2 for the OS.

  • Christophe Fiessinger's Blog

    Operations for the STSADM command-line tool in Microsoft Office Project Server 2007

    Must read if you are an administrator and enjoy running scripts instead of navigating a User Interface:

    http://technet2.microsoft.com/Office/en-us/library/b9b03034-d8be-4a3a-8b38-a3d25609d18c1033.mspx?mfr=true

    For instance to retrieve a list of projects you can issue the following command:

    stsadm -o projenumprojects –url <URL name>

    All EPM 2007 options available are:

    Projcatgroupbackup

    Projenumsecuritytemplates

    Projmodifyusergroupcategorypermissionsbytemplate

    Projcatgrouprestore

    Projenumusers

    Projmodifyusergroupglobalpermissions

    Projcreatecategory

    Projerpbackup

    Projmodifyusergroupincategory

    Projcreateentity

    Projerprestore

    Projmodifyuseringroup

    Projcreategroup

    Projguidfromcategoryname

    Projmodifyviewsincategory

    Projcreatepwainstance

    Projguidfromentitydisplayname

    Projonlinebackup

    Projcustfieldsbackup

    Projguidfromentityemail

    Projonlinerestore

    Projcustfieldsrestore

    Projguidfromentitylogonname

    Projreadbackupschedule

    Projdeactivateentity

    Projguidfromgroupname

    Projsyssettingsbackup

    Projdeletecategory

    Projguidfrompermissionname

    Projsyssettingsrestore

    Projdeletegroup

    Projguidfromprojectname

    Projupdatebackupschedule

    Projdeletepwainstance

    Projguidfromsecuritytemplatename

    Projupdateentity

    Projeglobalbackup

    Projguidfromviewname

    Projupdatepwainstance

    Projeglobalrestore

    Projmodifyentitysettings

    Projviewcategorydetails

    Projenumcategories

    Projmodifyprojectsettingsincategory

    Projviewentitydetails

    Projenumgroups

    Projmodifyprojectsincategory

    Projviewgroupdetails

    Projenumpermissions

    Projmodifyresourcesettingsincategory

    Projviewpwainstance

    Projenumprojects

    Projmodifyresourcesincategory

    Projviewsbackup

    Projenumpwainstances

    Projmodifyusergroupcategorypermissions

    Projviewsrestore

  • Christophe Fiessinger's Blog

    Team-Based Development in Microsoft Office SharePoint Server 2007

    If you are planning to do SharePoint/EPM development/customisations, this document is a good review of best practices: http://msdn2.microsoft.com/en-us/library/bb428899.aspx

    Summary: Learn to properly conduct team-environment development of Microsoft Office SharePoint Server 2007 sites and assemblies (Web Parts, site templates, custom list templates), as well as develop Microsoft Office SharePoint Designer artifacts (master pages, workflows, CSS sheets). (13 printed pages)

Page 65 of 69 (689 items) «6364656667»