Project Programmability

This blog focuses on customizations and programming for Project Web App, Project Server, Project Professional and Project Standard. Includes User Interface (UI) customizations, Project Server Interface (PSI) and Visual Basic for Applications (VBA) Programming. It also covers Business Intelligence.
 
 

  • Project Programmability and Business Intelligence

    Scrum. Scrum? Scrum Solution Starter for Project 2010!

    • 0 Comments

    Yes – it’s here for few weeks now - http://code.msdn.microsoft.com/P2010Scrum. Details are here.

    Thanks for all the comments, keep them coming!

  • Project Programmability and Business Intelligence

    Update of Impersonation Article and Code for Project Server 2010

    • 1 Comments

    Because there have been several recent changes in the post-beta version of Project Server 2010 and Office SharePoint Server 2010, the article How to: Use Impersonation with WCF in the January 2010 release of the SDK is not correct for the 4730.1010 and later builds of Project Server. The article in the March 2010 release of the SDK is correct. The attached Impersonation_PSIProxy.zip file includes the following:

    • Revised article: How to: Use Impersonation with WCF.docx
      • Changes required to use a Project Server installation that has multi-authentication (both Windows and Forms authentication)
      • Procedures for setting permissions for impersonation (requires permissions in both the SharePoint Service application and in Project Web App)
    • Complete Visual Studio 2008 solution (can be opened and converted with Visual Studio 2010)
    • Proxy files for the PSI services (build 4730.1010), including:
      • Scripts to update the proxy files on a Project Server computer and build a PSI proxy assembly
      • Intellisense files
      • Temporary web.config file and instructions, to use when updating the proxy files

     

  • Project Programmability and Business Intelligence

    Installing the Project 2013 SDK download on Windows 8

    • 0 Comments

    The Project 2013 SDK download is updated for the RTM release of Project 2013. In addition to articles, references, and code samples that are updated from the July release of Project 2013 Preview, the SDK also includes a local copy of VBA Help for Project Standard and Project Professional.

    You can install the downloaded Project2013SDK.msi file on computers that are running Windows 8, Windows 7 (and a couple of earlier Windows releases), Windows Server 2008 R2, and Windows Server 2012. When you install the SDK on a Windows 7 machine, the SDK contents are accessible from the Start menu. Figure 1 shows, for example, that the Microsoft SDKs folder contains the Project 2013 SDK folder, which contains links to three files. From the hierarchical context of the Start menu, it is clear that the Documentation node is contained in the Project 2013 SDK folder.

    Similarly, if you install the SharePoint 2013 SDK download and the Apps for Office and SharePoint SDK download, they each create a folder in Microsoft SDKs, and each SDK has a Documentation node within its folder.

    Figure 1. Using the Project 2013 SDK from the Windows 7 Start menu

    PJ15SDK_Start_Win7

    The problem

    Windows 8 does not have a Start menu, it has two related Start screens. After you install the Project 2013 SDK download, and scroll the main Start screen to the links for the installed files, you can see the same three links as in Windows 7. (To see the Welcome Guide on the Start screen, you can search for Welcome.rtf, open it in Internet Explorer, and then pin Welcome Guide to the Start screen.) But, the Start screen in Windows 8 is not arranged in hierarchical folders. In Figure 2, it is not clear what the Documentation link is for.

    Figure 2. Using the Documentation link to the Project 2013 SDK, on the Windows 8 Start screen

    Win8_StartScreen_Documentation

    The problem is worse if you also install the SharePoint 2013 SDK and the Apps for Office and SharePoint 2013 SDK. You would then have three Documentation links and three Welcome Guide links, each of which goes to a different SDK.

    If you right-click one of the Start screen icons, the icon shows a check mark, and the Start screen shows options at the bottom (see Figure 2). If you choose All apps at the bottom right of the screen, Windows 8 shows lists of installed apps within top-level groups. For example, the Microsoft SDKs group contains links for all of the Office, Project, and SharePoint SDKs that you install; there are no subfolders to distinguish which links go to which SDK. In Figure 3, only the Project 2013 SDK is installed, and the links have the same names as in Figure 2.

    Figure 3. Using the Project 2013 SDK links in the Apps view, in Windows 8

    Win8_AllApps_MicrosoftSDKs

    The workaround (for now)

    On a machine with Windows 8, you can install one SDK at a time, and then rename the links on the Start screen, before installing another SDK.

    To install Office, Project, and SharePoint SDKs on Windows 8

    1. Log on to Windows 8 as an administrator.
    2. Install, for example, the Project 2013 SDK.
    3. On the Start screen, right-click the Documentation icon, and then choose Open file location at the bottom of the screen.
    4. On the Windows Desktop, rename the Documentation link as Project 2013 SDK Documentation, and then choose Continue in the File Access Denied dialog box (see Figure 4).

      Figure 4. Renaming the Project 2013 SDK links in the Desktop view
      Win8_Rename_Documentation
    5. Similarly, rename the VBA Reference link as Project 2013 VBA Reference, and rename the Welcome Guide link as Project 2013 Welcome Guide.
    6. With the mouse pointer in the lower-left corner of the screen, choose the Start pop-up icon, and then scroll to the Project 2013 SDK icons (see Figure 5).

      Figure 5. Using the renamed links in the Start view
      Win8_StartScreen_ProjectSDK_Renamed
    7. Install the Apps for Office and SharePoint 2013 SDK, and similarly rename the Start screen links.
    8. Install the SharePoint 2013 SDK, and similarly rename the Start screen links. Figure 6 shows the Microsoft SDKs group with the renamed links in the All apps view.

    Figure 6. Using the renamed links for all three SDKs in the All apps view

    Win8_AllApps_3SDKs_Renamed

    In future releases, the Office, SharePoint, and Project SDK downloads will be reconfigured so that they install with non-conflicting link names on Windows 8.

     

  • Project Programmability and Business Intelligence

    ANNOUNCING: 15 upcoming Developer and 2 BI webcasts for Project 2010!

    • 2 Comments

    It’s my pleasure to announce series of upcoming Project 2010 webcasts for developers and BI specialists - spanning from extending User Interface of Project 2010 to deep drill down on workflow creation and extending the BI using Excel Services and Performance Point Services!

    We would like to also announce the Project 2010 Solution Starters! They were created to help in deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! In this regard we offer two series of Web Casts – the introductory series as well as deep code drill-down. Please note the source code and additional documents will be available after the respective webcast.

    What is in this post?

    · Project 2010 Developer webcasts

    · Project 2010 Business Intelligence webcasts

    · Project Developer “Real-World Solutions” series webcasts

    · Additional Resources for Project 2010

    · Q&A

    Project 2010 Developer Targeted webcasts

       image
    (yes – this timeline was created using Project Professional 2010)

     

    Title

    Level

    Date

    Abstract

    Presenter

    URL

    MSDN Webcast: Project 2010 and Project Server 2010 Programmability

    200

    On Demand

    In this webcast, we provide an overview of the programmability enhancements that are in the upcoming versions of Microsoft Office Project 2010 and Microsoft Office Project Server 2010. We highlight Windows Communication Foundation, Ribbon programmability, and the new programmability features such as Workflow. We also discuss writing backwards compatibility for Microsoft Office Project 2007 applications.

    Chris Boyd, Program Manager, Microsoft Corporation

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=7432

    MSDN Webcast: Project 2010 JS Grid Extensibility (Part 1 of 3): Project Web App

    400

    On Demand

    The first in a series of webcasts on extending grid pages in Project Web App it will focus on initializing custom grid code and interactions between the grid and the Project Web App Ribbon.  In particular we will see how to add additional functionality to the project center.

    Pat Malatack, Program Manager, Microsoft Corporation

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=13327

    MSDN Webcast: Project 2010 JS Grid Extensibility (Part 2 of 3): Project Web App

    400

    On Demand

    This second grid talk will focus on the use of events and delegates to interact with the timesheet grid in a way that allows one to at custom features and functionality to that page

    Pat Malatack, Program Manager, Microsoft Corporation

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=13328

    MSDN Webcast: Project 2010 JS Grid Extensibility (Part 3 of 3): Project Web App

    400

    On Demand

    In this final grid extensibility talk we will walk through even more grid customizations including adding custom commands to the column header dropdown and custom row header states

    Pat Malatack, Program Manager, Microsoft Corporation

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=13329

    MSDN Webcast: Project 2010 User Interface Customizations

    300

    On Demand

    This presentation will focus on Project Client user interface customization. In particular, the new Ribbon interface and custom task panes. It will also introduce the Project 2010 VSTO add-in and show how to use the Ribbon designer.

    Chris Boyd, Program Manager, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449001&Culture=en-US

    MSDN Webcast: Project 2010 Workflow Deep Dive (Part 1 of 2): PWA & Admin Experience

    200

    Thursday, May 13, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    This web Cast will cover technical details of how workflows work within Project Server 2010.  We will go into how we are built ontop of sharepoint, how workflows connet with PWA, and what customizations can be done through UI level.

    Sam Chung, Program Manager, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449005&Culture=en-US

    MSDN Webcast: Project 2010 Workflow Deep Dive (Part 2 of 2): Workflows in Visual Studio

    400

    Tuesday, May 26, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    This web Cast will cover the end to end story of creating workflows within Visual Studio.  We will discussing how to setup Visual Studio, how to create a basic workflow, and go over the different activities a developer will need in order to create a Project Server 2010 workflow.

    Sam Chung, Program Manager, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449563&Culture=en-US

    MSDN Webcast: Project 2010 Software Development Kit (SDK) Drill-down

    200

    Thursday, May 27, 2010

    Learn about the Project 2010 SDK content for Project Professional as well as for Project Server. This Web Cast explores the major parts of the SDK and includes development demonstrations using some the new Project 2010 features.

    Jim Corbin, senior Programming Writer, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032450102&Culture=en-US

    MSDN Webcast: Project 2010 Tailored Tools for Workflow Creation

    300

    Tuesday, June 1, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    This Web Cast will cover the different approaches customers and partners can take to create Project Server 2010 Workflows.  Whereas previous only Visual Studio was supported for creating Project 2010 Workflows, investments within this area has now opened up different avenues for our customers and partners to create these workflows.  In particular we will be covering some tools and partnerships which have been created for this particular purpose. 

    Sam Chung, Program Manager, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449569&Culture=en-US

    MSDN Webcast: Project 2010 Powerful Extensibility Using Visual Studio Tools

    400

    Thursday, June 3, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    Using the extensibility features of Microsoft Project 2010, I will show you how to
    1. Create a list of tasks in Microsoft Project that will require updating during a regular status update cycle
    2. Display that list as flexible grid using a Windows Form that can be sorted.
    3. Export the data to an XML file for opening in another program such as Excel or a Browser.
    We'll do this using Visual Studio, so it will be for real.

    Jim Aksel, Project MVP, Director, Celeris Systems

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449571&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters (Part 1 of 2): Achieve Results Quickly

    200

    Tuesday, June 8, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    This Web Casts will go over the user experience of these tools.

    Bobby Burns, Sam Chung, Program Managers, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449691&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters (Part 2 of 2): Achieve Results Quickly

    200

    Thursday, June 10, 2010

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    This Web Casts will go over the user experience of these tools.

    Bobby Burns, Sam Chung, Program Managers, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032450819&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters Drilldown & Code Walkthrough (Part 1 of 4)

    400

    Tuesday, June 15, 2010

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    These Web Casts will drill down and provide detailed code-level walkthrough for these tools.

    Mike Shughrue, Principal Consultant, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032450823&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters Drilldown & Code Walkthrough (Part 2 of 4)

    400

    Thursday, June 17, 2010

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    These Web Casts will drill down and provide detailed code-level walkthrough for these tools.

    Mike Shughrue, Principal Consultant, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032450826&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters Drilldown & Code Walkthrough (Part 3 of 4)

    400

    Tuesday, June 22, 2010

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    These Web Casts will drill down and provide detailed code-level walkthrough for these tools.

    Mike Shughrue, Principal Consultant, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032451063&Culture=en-US

    MSDN Webcast: Project 2010 Solution Starters Drilldown & Code Walkthrough (Part 4 of 4)

    400

    Thursday, June 24, 2010

    The purpose of creating the Project 2010 Solution Starters was to help in the deployment and customization of Project Server 2010. This set of Solution Starters is focusing on Demand Management experience in Project 2010. The Solution Starters source code will be publicly available via MSDN Code Gallery - so anyone can extend the experience! Please check Project 2010 developer center at http://msdn.microsoft.com/project for more details!
    These Web Casts will drill down and provide detailed code-level walkthrough for these tools.

    Mike Shughrue, Principal Consultant, Microsoft Corporation

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032451066&Culture=en-US

    Project 2010 Business Intelligence

    Title

    Level

    Date

    Abstract

    Presenter

    URL

    MSDN Webcast: Project 2010 BI & Portfolio Reporting (Part 1 of 2): Advanced Techniques

    300

    Friday, May 21, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    Web Cast 1 users will have the ability to understand how to utilize Excel Services, Reporting Services and Dashboard Designer to create organizational specific Dashboards.

    Marc Soester, Project MVP, General Manager, i-PMO

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449565&Culture=en-US

    MSDN Webcast: Project 2010 BI & Portfolio Reporting (Part 2 of 2): Advanced Techniques

    300

    Tuesday, May 25, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    Within Web Cast 2 users receive a deep dive experience on how to generate reports utilizing Project Servers data sources. This web cast will also allow users to generate a Visio Services Report and Power Pivot analytics by utilizing the Project Server 2010 Data Sources.

    Marc Soester, Project MVP, General Manager, i-PMO

    https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032449567&Culture=en-US

    “Real-World Solution” Project Developer series

    Title

    Level

    Date

    Abstract

    Presenter

    URL

    MSDN Webcast: Real-World Solutions: Importing Workspace Data into Project Server Custom Fields

    300

    On Demand

    A client has requested a Project Center view that displays the number of active issues for each project. This is not possible out of the box.

    Stephen C. Sanderlin, Project MVP, Vice President,
    msProjectExperts

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=6865

    MSDN Webcast: Real-World Solutions: Leveraging Project Server Security within SQL Reporting Services Reports

    300

    On Demand

    A client has requested a SQL Reporting Services report that displays sensitive financial data. However, they only want executors of the report to see information on projects to which they have access.

    Stephen C. Sanderlin, Project MVP, Vice President,
    msProjectExperts

    http://www.microsoft.com/events/series/epm.aspx?tab=Webcasts&seriesid=51&webcastid=6866

    MSDN Webcast: Real-World Solutions: Filter Resource and Project data based on Custom Fields

    300

    On Demand

    You are creating a custom Windows application for a client that extracts and displays Project and Resource information. Because the PSI provides no way to filter these entities prior to retrieval from the PSI, you must retrieve all of the projects or resources in order to filter them by Custom Field value. Because this client has some international users on slow WAN links, you must minimize the payload sent to the user by the PSI call.

    Stephen C. Sanderlin, Project MVP, Vice President,
    msProjectExperts

    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032424143&Culture=en-US

    MSDN Webcast: Real-World Solutions: Exporting Project Server Data to CSV

    300

    Monday, May 24, 2010
    1:00 P.M.–2:00 P.M. Pacific Time

    A client would like to export data from Project Server into a legacy Line of Business system. This system only accepts data in a CSV format.

    Stephen C. Sanderlin, Project MVP, Vice President,
    msProjectExperts

    http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032424148&Culture=en-US

    Project 2010 Resources

    Product information

    · http://www.microsoft.com/project/2010/

    · Project Team Blog http://blogs.msdn.com/project/

    Interactive content - Videos & Sessions & Webcast

    · http://www.microsoft.com/showcase/en/US/channels/microsoftproject/

    · http://www.microsoft.com/events/series/epm.aspx

    IT Professional related

    · TechCenter @ TechNet http://technet.microsoft.com/ProjectServer/

    · Admin Blog http://blogs.technet.com/projectadministration/

    Developer related

    · Developer center @ MSDN http://msdn.microsoft.com/Project/

    · Programmability blog http://blogs.msdn.com/project_programmability/

    Additional questions? Project 2010 Forums!

    · http://social.msdn.microsoft.com/Forums/en-US/category/projectserver2010,projectprofessional2010/

    SharePoint 2010 resources

    · http://sharepoint.microsoft.com

    Q&A

    Q: What if I miss the Webcast?

    A: As the nature of the live interaction – you can ask questions during the live Webcast. If you miss it you can watch the recording, but the Q&A option is not available.

    Q: Where do I get more information on Project 2010?

    A: Please check the Project 2010 Resources in this e-mail.

    Q: I’m SharePoint developer and I want to get started with Project Server. What are the best resources?

    A: Beside of the resources above – you can visit our “Project Server Programmability” series of webcasts on http://msdn.microsoft.com/en-us/office/dd334415.aspx.

    Q: Can I get Project 2010 Beta Virtual Image?

    A: Yes- Hosted or Download

    Q: I’m interested in IT Professional Webcasts as well. Where do I find them?

    A: Please check this announcement from Christophe http://blogs.msdn.com/chrisfie/archive/2010/03/03/announcing-microsoft-project-server-2010-it-professional-technet-webcast-series.aspx

     

    Thanks!

    Jan

  • Project Programmability and Business Intelligence

    The full list of Project Server / EPM developer-related WebCasts and Videos

    • 1 Comments

    We are posting full list of Project Server/EPM developer On Demand Recordings and upcoming WebCasts so you can mark your calendar. Some are in process of publishing, as soon as they are out, we will post an update J

     

    Office Project Server Programmability WebCast series

    Name

    Description

    Presenter

    Date/Time

    MSDN Webcast: Office Project Server Programmability (Part 1 of 4): Project Server 2007 Architecture for Developers (Level 400)

    During this webcast, we analyze all of the components that make up Project Server 2007. Once we examine the components, we discuss their importance in programming Microsoft Office Project Server 2007.

    Larry Duff, Microsoft

    On Demand Recording

    MSDN Webcast: Office Project Server Programmability (Part 2 of 4): Project Server Interface Programming Overview (Level 300)

    In this webcast, we provide an overview of what the Microsoft Project Server Interface (PSI) is and how the PSI is built. We also discuss the concepts of using Web services, custom datasets, and error handling.

    Larry Duff, Microsoft

    On Demand Recording

    Revised: MSDN Webcast: Office Project Server Programmability (Part 3 of 4): Review of the Project Server Interface Web Services – PART A (Level 400)

    In this webcast, we walk you through each of the Microsoft Project Server Interface (PSI) Web services, identify key usage of each of the Web services, and provide tips and tricks for working with PSI Web services. 

    Part A of this WebCast covers the following Administrative PSIs: Admin, Archive, CubeAdmin, Events, LoginForms, LoginWindows, Notifications, ObjectLinkProvider, QueueSystem, WssInterop.

    Larry Duff, Microsoft

    Thursday, March 26, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Revised: MSDN Webcast: Office Project Server Programmability (Part 3 of 4): Review of the Project Server Interface Web Services – PART B (Level 400)

    In this webcast, we walk you through each of the Microsoft Project Server Interface (PSI) Web services, identify key usage of each of the Web services, and provide tips and tricks for working with PSI Web services.

    Part B of this WebCast covers the following Project PSIs: Calendar, CustomFields, LookupTable, Project, Resource, ResourcePlan, Security, Statusing, TimeSheet.

    Larry Duff, Microsoft

    Thursday, April 2, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    New Date: MSDN Webcast: Office Project Server Programmability (Part 4 of 4): Project Server 2007 Events and Workflow (Level 400)

    During this webcast, we describe how events extend Microsoft Office Project Server 2007, build handlers for different events explaining when or when not to use them, and demonstrate how to use workflow as a way to illustrate event usage.

    Larry Duff, Microsoft

    Thursday, April 16, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    MSDN Webcast: Office Project Client Programmability (Level 300)

    We show you how to develop against the Microsoft Office Project client object model. We look at using Microsoft .NET and Microsoft Visual Studio Tools for the Microsoft Office System (VSTO) for programming to supplement standard Microsoft Visual Basic for Applications (VBA), and we examine connecting to Microsoft Office Project Server via the Project client object model.

    Larry Duff, Microsoft

    Thursday, April 23, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Other Office Project Server Programmability and solutions-related WebCasts

    Newly scheduled: MSDN WebCast: EPMAuditing Solution Starter Drilldown (Level 300)

    During this webcast, we will explore a new solution starter for Microsoft Office Project Server 2007, EPMAuditing. EPMAuditing provides a framework to capture event data from Project Server 2007 and use the data for reporting, debugging, auditing, or whatever use you find. We will analyze all of the components that make up EPMAuditing. Then we’ll dive into the code, because this solution is made to be extended and customized.

    Larry Duff, Microsoft

    Thursday, May 14, 2009

    8:00 A.M.–9:30 A.M. Pacific Time

    Working with the Project Server 2007 Reporting Database

    This video provides strategies for locating and using the data in the Project Server 2007 Reporting database. The session walks through three examples of building relatively complex queries from the ground up. Note: This video is recorded from a WebCast session, with a logon through Microsoft Office Live Meeting. The meeting audio is interrupted in the first two slides by the logon.

    Patrick Conlan, Microsoft

    On Demand Recording

    Project Server 2007 Timesheet Customizations

    This video covers all options around timesheet customizations in Project Server 2007. The following CodePlex projects are used during the webcast:

    · EPM Timesheet & Statusing Customization Samples

    · Project Server 2007 Timesheet Tied-Mode Service and Event

    · Project Server 2007 Timesheet Data Population Tool

    Christophe Fiessinger, Microsoft

    On Demand Recording

    Project Server 2007 Integration with Team Foundation Server for EPM Specialists

    Watch an overview of the Visual Studio Team Foundation Server - Project Server 2007 Connector to understand how this solution uses features within Project Server 2007 to enable this integration.

    Lenny Fenster, Microsoft

    On Demand Recording

    MSDN Webcast: Project Server and Project Portfolio Server Advanced Customization (Level 100)

    Present two of the latest solution starters produced for Project and Portfolio Server 2007:

    * The Solution Connector is an ASP.NET web service and .NET class library which provides a set of methods for programmatically creating, updating or deleting projects and their attributes in Microsoft Office Project Portfolio Server 2007

    * Project Server audit framework: this solutions give you the ability to audit specific Project Server events within a farm.

    Larry Duff, Microsoft

    On Demand Recording

  • Project Programmability and Business Intelligence

    Working with the Custom Fields Data Table

    • 1 Comments

    There have been a number of inquiries with regards to the custom field column definitions. So here they are:

    MD_AGGREGATION_TYPE_ENUM: Specifies the roll up type for a custom field.

    MD_ENT_TYPE_UID: Specifies the type of entity (project, task, or resource) for the custom field.

    MD_LOOKUP_TABLE_UID: Specifies the GUID of the lookup table to use for the custom field.

    MD_PROP_CHECKOUTBY: GUID of the user who has the custom field checked out for modification.

    MD_PROP_CHECKOUTDATE: Date the custom field was checked out for modification.

    MD_PROP_DEFAULT_VALUE: GUID of the default value in a lookup table for a custom field.

    MD_PROP_FORMULA: Formula that calculates the value of a custom field.

    MD_PROP_GRAPHICAL_INDICATOR: Definition of a graphical indicator for a custom field.

    MD_PROP_GRAPHICAL_INDICATOR_TOOLTIP: Specifies whether the graphical indicator has a tool tip.

    MD_PROP_ID: Integer ID of the enterprise custom field.

    MD_PROP_ID_SECONDARY: Assignment custom field ID for resource and task custom fields.

    MD_PROP_IS_LEAF_NODE_ONLY: Specifies whether the custom field value must be a leaf node in the lookup table.

    MD_PROP_IS_REQUIRED: Specifies whether the custom field is required when the entity (project, resource, or task) is created.

    MD_PROP_MAX_VALUES: Specifies whether the custom field has a single value or uses a multi-value lookup table.

    MD_PROP_NAME: Name of the custom field.

    MD_PROP_PROJ_SUMM_GRAPHICAL_INDICATOR: Definition of the project summary graphical indicator for the custom field.

    MD_PROP_ROLLDOWN_TO_ASSN: Specifies whether the resource or task custom field rolls down to assignments.

    MD_PROP_SUMM_GRAPHICAL_INDICATOR: Definition of the custom field graphical indicator for the summary task.

    MD_PROP_TYPE_ENUM: Type of the custom field.

    MD_PROP_UID: GUID of the custom field.

    MD_PROP_UID_SECONDARY: Assignment custom field GUID for resource and task custom fields.

    MD_PROP_USE_FOR_MATCHING: Specifies whether to use the resource custom field for matching generic resources.

    Chris Boyd

  • Project Programmability and Business Intelligence

    Synchronizing Membership Provider for Project Workspaces

    • 2 Comments

    Back on May 17th I posted code that showed how to update the workspace data with the RDB:

    http://blogs.msdn.com/project_programmability/archive/2007/05/17/syncing-project-workspaces-with-the-rdb.aspx 

    Here is a similar program to synchronize project workspace membership. The interesting twist is that I show how to be kinder to the Project Queue by adding a few jobs at a time and waiting for them to complete.

    Here is the code: 

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Data;
    using System.Web.Services.Protocols;
    using System.Diagnostics;
    using PSLibrary = Microsoft.Office.Project.Server.Library;

    namespace WorkspaceUpdate
    {
        class Program
        {
            static void Main(string[] args)
            {
                int count = 0;
                bool verbose = false;           // Verbose Output switch
                Guid job = Guid.Empty;          // The latest job submitted to the queue.
                int timeOut = 60;               // Default timeout before terminating the queue job

                string ls_projURL = "";
                const string PROJECT_SERVICE_PATH = "_vti_bin/psi/Project.asmx";
                const string WSSINTEROP_SERVICE_PATH = "_vti_bin/PSI/WSSInterop.asmx";
                const string WSQUEUESYSTEM_SERVICE_PATH = "_vti_bin/PSI/QueueSystem.asmx";

                if (args.Length == 0 || args.Length > 3)
                {
                    Message();
                }
                else if (args[0] == "/?")
                {
                    Message();
                }
                else
                {
                    ls_projURL = args[0];

                    if (args.Length > 2 && args[2].ToLower() == "verbose")
                    {
                        verbose = true;
                    }

                    try
                    {
                        timeOut = Convert.ToInt32(args[1]);
                    }
                    catch
                    {
                        Event("Warning: Invalid timeout, defaulting to 60 seconds.", EventLogEntryType.Warning, verbose);
                    }
                   
                    WSProject.Project ws_Project = new WSProject.Project();
                    WSSInterop.WssInterop ws_WssInterop = new WSSInterop.WssInterop();
                    WSQueueSystem.QueueSystem qsWS = new WSQueueSystem.QueueSystem();
                  
                    if (!ls_projURL.EndsWith("/"))
                    {
                        ls_projURL += "/";
                    }

                    try
                    {


                        ws_Project.Url = ls_projURL + PROJECT_SERVICE_PATH;
                        ws_Project.Credentials = CredentialCache.DefaultCredentials;

                        ws_WssInterop.Url = ls_projURL + WSSINTEROP_SERVICE_PATH;
                        ws_WssInterop.Credentials = CredentialCache.DefaultCredentials;

                        qsWS.Url = ls_projURL + WSQUEUESYSTEM_SERVICE_PATH;
                        qsWS.Credentials = CredentialCache.DefaultCredentials;
                       

                        Guid lo_projGUID;
                        string ls_projName;
                       
                        WSProject.ProjectDataSet lo_projs = null;
                        WSProject.ProjectDataSet lo_projDS;

                        try
                        {
                            lo_projs = ws_Project.ReadProjectList();

                            DataRowCollection lo_projects = lo_projs.Tables[lo_projs.Project.TableName].Rows;

                            for (int i = 0; i < lo_projects.Count; i++)
                            {
                                lo_projGUID = new Guid(lo_projects[i][0].ToString());
                                ls_projName = lo_projects[i][1].ToString();

                                try
                                {
                                    lo_projDS = ws_Project.ReadProjectEntities(lo_projGUID, 1, WSProject.DataStoreEnum.PublishedStore);

                                    // Check if the Project has a Workspace
                                    if (lo_projDS.Tables[lo_projDS.Project.TableName].Rows[0][lo_projDS.Project.WSTS_SERVER_UIDColumn.ColumnName] != null && lo_projDS.Tables[lo_projDS.Project.TableName].Rows[0][lo_projDS.Project.WSTS_SERVER_UIDColumn.ColumnName].ToString() != "")
                                    {
                                        Message("Synchronizing Workspace for Project" + ls_projName, verbose);
                                       
                                        //Wait to let the server process the work
                                        if (count % 4 == 3)
                                        {
                                            if (WaitForQueue(timeOut, job, qsWS) == false)
                                            {
                                                Event("Warning: Queue Job not Processed for Project:" + ls_projName + " Check Project Server Queue.", EventLogEntryType.Warning, verbose);
                                            }
                                        }

                                        job = Guid.NewGuid();

                                        ws_WssInterop.QueueSynchronizeMembershipForWssSite(lo_projGUID, job);


                                        count++;
                                    }
                                    else
                                    {
                                        Message("Notice: Project" + ls_projName + " does not have a workspace.", verbose);
                                    }
                                }
                                catch (SoapException lo_ex)
                                {
                                    PSLibrary.PSClientError psiError = new PSLibrary.PSClientError(lo_ex);
                                    PSLibrary.PSErrorInfo[] psiErrors = psiError.GetAllErrors();

                                    if (psiErrors.Length == 1)
                                    {
                                        if (psiErrors[0].ToString() == "ProjectNotFound")
                                        {
                                            Message("Notice: Project" + ls_projName + " is not published.", verbose);
                                        }
                                    }

                                }
                            }

                            Event("Successfully Synchronized Membership for Workspaces", EventLogEntryType.Information, verbose);
                        }

                        catch (WebException lo_ex)
                        {
                            Event("Error:" + lo_ex.Message, EventLogEntryType.Error, verbose);
                        }
                        catch (Exception lo_ex)
                        {
                            Event("Unknown Error:" + lo_ex.Message, EventLogEntryType.Error, verbose);
                        }
                    }
                    catch (UriFormatException lo_ex)
                    {
                        Event("Unknown Error:" + lo_ex.Message, EventLogEntryType.Error, verbose); ;
                    }
                }
            }

            private static bool WaitForQueue(int timeOut, Guid jobId, WSQueueSystem.QueueSystem qsWS)
            {
               

                int sleep = 3;
                int timeSlept = 0;        // Total time slept (seconds)
                bool jobSuccess = false;
                string xmlError;

                WSQueueSystem.JobState jobState; // Status of the queue job

                timeOut = timeOut * 1000;

                while (true)
                {
                    jobState = qsWS.GetJobCompletionState(jobId, out xmlError);

                    if (jobState == WSQueueSystem.JobState.Success)
                    {
                        jobSuccess = true;
                        break;
                    }
                    else if (jobState == WSQueueSystem.JobState.Unknown
                        || jobState == WSQueueSystem.JobState.Failed
                        || jobState == WSQueueSystem.JobState.FailedNotBlocking
                        || jobState == WSQueueSystem.JobState.CorrelationBlocked
                        || jobState == WSQueueSystem.JobState.Canceled)
                    {
                        jobSuccess = false;
                        break;
                    }
                    else if (timeSlept > timeOut)
                    {
                        jobSuccess = true;
                        //qsWS.CancelJobSimple(jobId);
                        break;
                    }

                    System.Threading.Thread.Sleep(sleep * 1000);

                    timeSlept = +sleep * 1000;
                }

                return jobSuccess;
            }

            static private void Message()
            {
                System.Console.WriteLine("");
                System.Console.WriteLine("WorkspaceUpdate url timeout [verbose]");
                System.Console.WriteLine("  url - The URL to the project server.");
                System.Console.WriteLine("  timeout - Seconds to wait for the queue job to process the User Sync");
                System.Console.WriteLine("  verbose - An optional parameter that outputs progress.");
            }

            static private string Message(string as_msg, bool verbose)
            {
                as_msg = DateTime.Now.ToString() + ":" + as_msg;

                if (verbose)
                    System.Console.WriteLine(as_msg);

                return as_msg;
            }


            static private void Event(string as_msg, EventLogEntryType eventType, bool verbose)
            {
                EventLog lo_eventLog = new EventLog();
                lo_eventLog.Source = "WorkspaceUpdate Sync Job";

                as_msg = Message(as_msg, verbose);
               
                lo_eventLog.WriteEntry(as_msg, eventType, 3652);

            }
        }
    }

  • Project Programmability and Business Intelligence

    Tied Mode between Timesheet & My Tasks

    • 1 Comments

    We have published today an EPM 2007 solution starter that introduces Tied Mode between Timesheet & My Tasks on CodePlex: http://www.codeplex.com/EPMTSST

    MWSnap024 2007-11-15, 16_16_05.jpg

    Project Server 2007 provides for full separation between the project-focused My Tasks “Statusing” functionality and the time-period-focused Timesheet functionality, together with the ability to manually import data from one set of functionality to the other to keep them synchronized.

    This solution attempts to address this frustration by treating the timesheet system as the master system and attempting to synchronize the data into the My Tasks functionality (including task approvals) whenever a timesheet is saved (similar to Project Server 2003 integrated (“Tied”) timesheet and statusing functionality).

    This solution starter includes a 18 pages document as well as source code and a compiled DLL ready to deploy and test.

    A special thank you to Julie Ripoteau and Olivier Laymand from MCS France for testing the code extensively, as well as Patrick Conlan and Chris Boyd from the Product Group for reviewing the code and documentation. 

  • Project Programmability and Business Intelligence

    Connection Strings…

    • 2 Comments

    Hey,

    Here is a great post:

    http://projectserver.cz/cms/index.php?itemid=35

    It shows how to get the connection string to the Project Server 2007 Reporting Database (and the other three databases which are not supported programming interfaces). This is extremely helpful when creating PSI extensions. Just one caveat, this may break after a hot fix or service pack install.

    Chris Boyd

  • Project Programmability and Business Intelligence

    How to: Modify the Ribbon in PWA

    • 0 Comments

    Note:  For the updated article, see How to: Modify the Ribbon in PWA in the Project 2010 SDK. The attached PWA_Ribbon_Customization.zip file includes the complete Visual Studio 2010 solution.

    The attached PWA_Ribbon_Customization.zip file includes an article that shows how to develop and deploy a SharePoint feature that adds a Close Project button to the Project Details page in Project Web App. You can add a second feature to the same solution that removes, modifies, and disables several buttons and other controls on the Timesheet page, when timesheets are in the single entry mode. The code in the article is based on code samples by Adrian Jenkins and Maria Kouvlaki, Microsoft Corporation.

  • Project Programmability and Business Intelligence

    Two new Project Server 2007 tools have been released on CodePlex today

    • 1 Comments

    Hello,

    Two new Project Server 2007 tools have been released on CodePlex today:

    EPM 2007 Log File Report tool EPM 2007 Queue Watch tool
    http://www.codeplex.com/EPMLogFileReport http://www.codeplex.com/EPMQueueWatch
    The Project Server 2007 Log File Report Tool enables the import and the reporting of log file generated by your EPM & SharePoint farm. The Log File Report Tool will import log files (in an SQL database) from all servers in your farm with the ability to filter them by date. Once the import is complete you can easily search for specific log file messages using the following filtering criteria: Area, Category, Level, Process, Server as well as date and created reports.

    The Project Server 2007 Queue Watch Tool will help you monitor all queue activities for a specific Project Web Access (PWA) instance. This tool leverages the standard Project Server Interface publically documented web services to query and retrieve jobs in the Project Server queues, further you can configure the tool to filter the information retrieved by Message Types and Job types.

    The Queue Watch Tool is available as a WinForms application. It was written by EPM World Wide Center of Excellence (WW COE) to efficiently monitor and troubleshoot queue activities for Project Server 2007 farms.

    MWSnap052 2007-12-12, 10_44_28 MWSnap071 2007-12-14, 12_45_33
    This release contains documentation, setup, and source code. This release contains documentation, setup, and source code.


    About CodePlex

    CodePlex is Microsoft's open source project hosting web site. You can use CodePlex to create new projects to share with the world, join others who have already started their own projects, or use the applications on this site and provide feedback. A word about Microsoft’s role: Microsoft does not control, review, revise, endorse or distribute the third party projects on this site. Microsoft is hosting the CodePlex site solely as a web storage site as a service to the developer community.

    Q&A

    Q: Is the tool supported?

    A: There is no support in terms of CSS/PSS. We expect the support being a CodePlex community effort. Please note that the customization code uses standard supported web service calls available out of the box in EPM2007.

    Q: Is the tool free?

    A: Yes.

    Q: Can I distribute the tool and the source code to customers and partners?

    A: Customers and Partners can use both. Please point them to CodePlex as they have to agree on the license terms

    Q: Can a partner distribute the tool and code as is?

    A: No, but he can point his customer to the website to download it, so he makes sure that the customer agrees with the license terms.

    Q: Can a customer install the customization and use it?

    A: Yes the customer can, but he/she is responsible for testing it and running it.

    Q: Can I suggest changes to it?

    A: Yes, join the CodePlex community or send us an email: epmssdev@microsoft.com

    Q: Will this tool be distributed in other ways (i.e. DVDs)?

    A: No.

    Q: What skills do I need to modify or change the tool?

    A: C#, Project Server Interface, and a good understanding of the EPM 2007 data schema.

    Q: I’m trying to modify the code and do have questions. Who do I ask?

    A: Go to the Discussions forums on CodePlex.

    Q: What are all the EPM projects released on CodePlex?

    A. Check this: http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=epm

    Regards,

    Christophe Fiessinger

  • Project Programmability and Business Intelligence

    Using ReadCustomFieldsByEntity(...)

    • 0 Comments

    Phil Smail, a fellow PM on the Project Team, just passed along a helpful hint: 

     

    I am writing a cool little app and I wanted to pull back all the Resource Custom fields. Thankfully there’s a PSI to do this call ReadCustomFieldsByEntity, where the entity can be Project, Resource or Task. This is pretty neat except that the SDK docs don’t mention what the potential GUIDs options can be. After a bit of digging around I found out what the correct item was within the Project.Server.Library assembly.

     

    using PSLibrary = Microsoft.Office.Project.Server.Library;

    ...

    CustomFieldsDataSet ds = CustomFields.ReadCustomFieldsByEntity(new Guid(PSLibrary.EntityCollection.Entities.ResourceEntity.UniqueId));

    ...

  • Project Programmability and Business Intelligence

    Creating a Project for a Department, and Using the WCF FaultException

    • 0 Comments

    When you add a Project Departments custom field to a ProjectDataSet.ProjectCustomFields table, do not set the value of the MD_PROP_ID property. Project Server automatically adds a value when it creates the project. The CreateProject4Department code example shows the data in the ProjectDataSet before and after the call to QueueCreateProject.

    The WCF-based CreateProject4Department example in the attached  CreateProject4Department.zip file does the following:

    1. Builds a basic ProjectDataSet for one new project, including a row in the ProjectCustomFields table. The project is assigned to a specified department by using the Project Departments custom field that has a value in the Departments lookup table.

    2. After calling QueueCreateProject, waits for the project queue to finish, and then reads the ProjectDataSet back by using ReadProject.

    3. Saves the ProjectDataSet to XML files, once before creating the project and once after calling ReadProject. Shows that Project Server automatically creates the MD_PROP_ID field for the Project Departments custom field.

    4. Shows how to use the WCF FaultException, to display the error stack. Comments in the PopulateData method show how to create errors in the ProjectDataSet that trigger the System.ServiceModel.FaultException when you call QueueCreateProject.

    To get a list of errors if you get a FaultException when you call a PSI method in a WCF-based application, you can extract a PSClientError object from the FaultException object. You can then use GetAllErrors to store the error information in a PSErrorInfo array and enumerate the errors.

    In addition to the data in the PSClientError object, the FaultException object can include other types of errors, such as failure to connect to Project Server. The errOut parameter of the GetPSClientError method in the attached code sample shows additional information. When you make the changes that create errors in the ProjectCustomFields properties, and then run the application, the errOut parameter includes the errinfo element and other data (formatted here from the console output). Following is sample output from the exception handler:

    ==============================
    Error details:
    <errinfo xmlns="">
      <dataset name="ProjectDataSet">
        <table name="ProjectCustomFields">
          <row CUSTOM_FIELD_UID="976d3bd9-95ff-40a2-a938-960c410b0341">
            <error id="11704" name="CustomFieldInvalidTypeColumnFilledIn"
                   uid="aa8a2fab-9262-422f-b022-ca1cb12bc75f"></error>
            <error id="11713" name="CustomFieldRequiredValueNotProvided"
                   uid="dc2e2156-86e9-4aac-bede-d07dc44dfedc"></error>
          </row>
        </table>
      </dataset>
    </errinfo>

    System.ServiceModel.FaultException`1[SvcProject.ServerExecutionFault]:
    ProjectServerError(s) LastError=CustomFieldRequiredValueNotProvided Instructions:
    Pass this into PSClientError constructor to access all error information
    (Fault Detail is equal to SvcProject.ServerExecutionFault).

    ============================
    PSClientError output:
    CustomFieldInvalidTypeColumnFilledIn

    ============================
    PSClientError output:
    CustomFieldRequiredValueNotProvided

    For information about using the attached WCF-based application in Visual Studio 2010, see Prerequisites for WCF-Based Code Samples in the SDK.

     

  • Project Programmability and Business Intelligence

    Upcoming “Project Server Report Pack II - The top reports” WebCast

    • 0 Comments

    Please mark your calendar if you are interested! Are you asking what is the difference between the SDK Report Pack and this one? Think about the SDK version as the starter on “HOW” to write queries against Reporting database. This should go one step further – once you know HOW – you are interested in “WHAT” to bubble into your reports and “WHY” :)  This report pack has been built by top Microsoft Consultants who deploy/manage and enhance the “our” EPM solution for individual customers and contains very valuable know-how that they have collected over the years...

    Start Date: Wednesday, August 19, 2009 8:00 AM Pacific Time (US & Canada)

    Overview

    The “Microsoft Office Enterprise Project Management (EPM) 2007 Report Pack II -  The top reports” provides rich reports for common information needs. The EPM 2007 Report Pack II is a collection of 12 Microsoft SQL Server Reporting Services (SSRS) reports designed for various user groups of the EPM solution. In this webcast, we provide an overview and demonstration of the EPM 2007 Report Pack. We discuss the different usage scenarios the reports are tailored to fit and review the components used to move, store, and render the reports. With this information, you should have a better understanding of how to use the EPM 2007 Report Pack II to provide business value for your organization.

    Presenters: Bulent Guzel, Senior Consultant, Microsoft Corporation and T.R. Sloan, Solutions Architect, Microsoft Corporation

    Registration: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032423031

    Enjoy!

  • Project Programmability and Business Intelligence

    MSDN Webcast: Project 2010 JS Grid Extensibility: Project Web App

    • 10 Comments

    Pat Malatack (Program Manager, Microsoft Corporation) has a comprehensive series of webcasts on extending the JS Grid in Project Web App.

    Note:  This blog post was originally created Monday, April 19, 2010. The webcasts were missing for the past several months, but have been reinstated on the Microsoft Events site (https://msevents.microsoft.com/).

    MSDN Webcast: Project 2010 JS Grid Extensibility: Project Web App (Part 1 of 3) (Level 400)
    Tuesday, April 20, 2010
    1:00 P.M.-2:00 P.M. Pacific Time
    This is the first webcast in a three-part series on extending grid pages in Microsoft Office Project Web App. In this webcast, we focus on initializing custom grid code and interactions between the grid and the Project Web App Ribbon. In particular, we show you how to add additional functionality to the Project Center.
     
    MSDN Webcast: Project 2010 JS Grid Extensibility: Project Web App (Part 2 of 3) (Level 400)
    Thursday, April 22, 2010
    1:00 P.M.-2:00 P.M. Pacific Time
    This is the second webcast in a three-part series on extending grid pages in Microsoft Office Project Web App. In this webcast, we focus on the use of events and delegates to interact with the timesheet grid in a way that allows for the addition of custom features and functionality to that page.
     
    MSDN Webcast: Project 2010 JS Grid Extensibility: Project Web App (Part 3 of 3) (Level 400)
    Tuesday, April 27, 2010
    1:00 P.M.-2:00 P.M. Pacific Time
    This is the third webcast in a three-part series on extending grid pages in Microsoft Office Project Web App. In this webcast, we walk you through more grid customizations, including adding custom commands to the column header dropdown and custom row header states.

  • Project Programmability and Business Intelligence

    SharePoint 2010: 3 New Visual Studio 2010 Extensibility Projects for SharePoint 2010

    • 0 Comments


    Pretty cool – check this out http://www.sharepointproconnections.com/blogs/MicrosoftInsider/tabid/1948/entryid/12761/3-New-Visual-Studio-2010-Extensibility-Projects-for-SharePoint-2010.aspx

     

    These projects will help you automate some common development tasks when creating SharePoint 2010 solutions using Visual Studio 2010.

    These three SharePoint 2010 Extensibility Projects can be downloaded from the MSDN Code Gallery here, http://code.msdn.microsoft.com/vsixforsp.

    All of the projects contain a Hands On Lab and a walkthrough video. Follow the links below to blog posts providing further details for each project template.

     

    clip_image001

    Silverlight Web Part Project Template

    The Silverlight Web Part Project template will create a fully functioning Silverlight Web Part project ready for deployment. The project template also uses a Silverlight control generator that replaces some of the functionality that was deprecated from the Silverlight 3.0 SDK. This makes it easy for developers to quickly create a custom Silverlight application that goes beyond the functionality of the built in Silverlight Web Parts. Developers have total control over the Web Part such as how the Silverlight plugin code is generated and other Web Part behavior.
    For more details and a quick walkthrough visit: Silverlight and SharePoint project template

    clip_image002

    Server Ribbon Project Item Template

    One of the new features in SharePoint 2010 is the Server Ribbon. The Server Ribbon brings all of the goodness that the Client Ribbon provides to SharePoint. Creating a ribbon requires that the developer code the ribbon xml by hand. Doing this by hand has a steep learning curve to get started. The Server Ribbon Project Item template makes it easy to create a Server Ribbon by following the wizard. In addition to the wizard there are code snippets for create all of the ribbon controls. This is a great way to learn the correct ribbon xml to make powerful user interfaces in SharePoint.
    For more details and a quick walkthrough visit: SharePoint Ribbon project template

    clip_image003

    OBA Deployment Project Item Template

    SharePoint enables you to create custom content types that can be attached to document libraries. Creating rich OBA document templates using Visual Studio and deploying them to SharePoint is a common pattern that developers use to enable Line of Business applications. If you’ve deployed a document-level add-in to SharePoint you are familiar with the number of steps involved in this process. The OBA Custom Content Types Project Item template removes all of these steps and reduces the process down to a simple wizard and an F5 deployment. The extensibility project does all of the work making the developers more productive.

    For more details and a quick walkthrough visit: OBA Deployment project template

  • Project Programmability and Business Intelligence

    Search Project Server data using MOSS' BDC and Enterprise Search - CodePlex Solution Starter

    • 2 Comments

    Bonjour,

    Do you ever wonder how many projects are in a specific phase? Would you like to know the attributes of a specific resource? Are you looking when a specific milestone ends? Do you have users in your organization that are not part of the Project Server resource pool but still need to access the data? Being able to easily search valuable information is becoming a key feature in any organization. 

    This solution starter demonstrates how to leverage SharePoint Server’s Business Data Catalog (BDC) to index project server data and enable users to search the different objects (projects, tasks, resources, lookup tables…) using SharePoint Server’s Enterprise Search, and give you answers to all the questions above.  Out of the box the Project Server data is not indexed (only the SharePoint objects are indexed for instance Issues, Risks, Documents…) and thus users cannot search the content contained in the Reporting database. This solution starter will thus enable you to mine the PS 2007 gold mine and find the nuggets you were looking for very easily!

    http://www.codeplex.com/EPMBDC

    This solution starter was created for a presentation I delivered last week at the SharePoint Conference to illustrate one of the benefits of deploying PS 2007 with SharePoint Server ( and not just WSS V3).

    clip_image001clip_image002


    About CodePlex

    CodePlex is Microsoft's open source project hosting web site. You can use CodePlex to create new projects to share with the world, join others who have already started their own projects, or use the applications on this site and provide feedback. A word about Microsoft’s role: Microsoft does not control, review, revise, endorse or distribute the third party projects on this site. Microsoft is hosting the CodePlex site solely as a web storage site as a service to the developer community.

    Q&A

    Q: Is the tool supported?

    A: There is no support in terms of CSS/PSS. We expect the support being a CodePlex community effort. Please note that the customization code uses standard supported web service calls available out of the box in EPM2007.

    Q: Is the tool free?

    A: Yes.

    Q: Can I distribute the tool and the source code to customers and partners?

    A: Customers and Partners can use both. Please point them to CodePlex as they have to agree on the license terms

    Q: Can a partner distribute the tool and code as is?

    A: No, but he can point his customer to the website to download it, so he makes sure that the customer agrees with the license terms.

    Q: Can a customer install the customization and use it?

    A: Yes the customer can, but he/she is responsible for testing it and running it.

    Q: Can I suggest changes to it?

    A: Yes, join the CodePlex community or send us an email: epmssdev@microsoft.com

    Q: Will this tool be distributed in other ways (i.e. DVDs)?

    A: No.

    Q: What skills do I need to modify or change the tool?

    A: C#, Project Server Interface, and a good understanding of the EPM 2007 data schema.

    Q: I’m trying to modify the code and do have questions. Who do I ask?

    A: Go to the Discussions forums on CodePlex.

    Q: What are all the EPM projects released on CodePlex?

    A. Check this: http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=epm

    Regards,

    Christophe Fiessinger

     

    Technorati tags: , ,
  • Project Programmability and Business Intelligence

    Agile Custom Project Guide - Second File Attachment

    • 7 Comments

    Due to the size of the Zip file, I need to split the file into two. This post has the second file. The main post will have the first file attached.

  • Project Programmability and Business Intelligence

    Office Project Server 2007 Developer Training

    • 2 Comments

    Microsoft  Office Enterprise Project Management University (EPMU) is offering a range of new courses in Project Server and Project Portfolio Sever 2007 including Developer Training.

    Office Project Server 2007 Developer Training

    • Designed for Developers extending, developing and integrating Office Project Server 2007
    • 3 Day Course
    • USD$550

    For full details of all courses visit www.msepmu.com

  • Project Programmability and Business Intelligence

    Registering with Events over the next few weeks?

    • 1 Comments

    I just want to give everyone a heads up who is developing and registering event handlers for Project Server over the next few weeks. When you create, update or delete an event handler, a WSS timer job is created to do this work. These jobs are delayed by an hour due to a DST issue in WSS.

    There are a couple of workarounds:

    ·         Wait an hour for the event to be updated

    ·         Set the clock back one hour and let the timer job run

    For more information, see this KB: http://support.microsoft.com/kb/932563

     

  • Project Programmability and Business Intelligence

    Update of the Project 2010 SDK (March 2011)

    • 0 Comments

    The Project 2010 SDK download and the MSDN online release are both updated. They have the same URLs as previous releases:

    New conceptual and how-to topics:

    Topic updates since January 14, which was the previous MSDN online update:
    18 conceptual and how-to topics have relatively minor updates.
    50 managed code types (plus subtopics for properties, methods, and events) are updated, including new code samples for:

    New / updated items in the Project 2010 SDK download, which was last updated Sept. 2010:

    • Project2010SDK.chm is an HTML Help file that includes the same updated content that is online.
    • WINPROJ.DEV.hxs is an update of VBA Help that includes the latest changes in the VBA object model documentation. There are also instructions for replacing the local VBA Help file that was shipped with the Project RTM release.
    • IntelliSense files are updated for the PSI proxy assembly and the Project Server assemblies, to show descriptions of classes and members while programming in Visual Studio.
    • Event handler solutions: TestCreatingProject, TestCreatedCustomField
    • OLP sample is a solution that uses the following PSI methods: ReadProjectList, ReadProject, ReadWssData, ReadTaskWebObject, CreateWebObjectLinks, ReadTaskLinkedWebObjects, DeleteWebObjectLink
    • ProjTool complete solution, updated for Project 2010.
    • PWA Ribbon Customization solution.
    • New PSI code samples include complete WCF-based solutions for code samples that are published in the managed code reference, for the following methods: CreateResource, ReadResource, ReadResourcePlan, QueueCreateResourcePlan, QueuePublishResourcePlan, ReadDriverList, ReadPrioritization, and CreatePrioritization.
    • Microsoft.Office.Project.Server.Library.dll, file version 14.0.4999.1061, and redistribution license.

    --Jim

  • Project Programmability and Business Intelligence

    Office 2010 Interactive Developer Map

    • 0 Comments

    The Microsoft Office 2007 interactive developer map has been available for several years, which is very handy for finding documentation on all Office 2007 products. Now Office 2010 has its own: See Microsoft Office 2010 Developer Map.

    Want to find documentation for OneNote Mobile on Windows Phone 7? Just click Mobile Applications in the Developer Map, click OneNote Mobile, and it takes you to the correct documentation  page. Yes, Project and Project Server are there, too.

    The interactive map includes relationships of all of the Microsoft Office client applications, server applications, mobile applications, services and Office 365 applications, and related technologies, development tools, and platform components. Just what we have been waiting for.

    The Learn Office Development page on MSDN is recently updated. It includes links to both of the Office Developer Maps, and also a link to the Office 2010 Developer Map poster.

  • Project Programmability and Business Intelligence

    Microsoft Office Project Conference 2007 - Simple Effective Rights

    • 2 Comments

    I'm Phil Smail, one of the Program Managers from the Product Group. One of my presentations during the MOPC 2007 was one of security programmability. As part of that Presentation I demonstrated some code that I wanted to get onto this blog

    This code is a Simple Effective Rights tool. It's essentially a cut down version of the View Effective Rights tool we shipped with the Project 2003 Project Resource Kit (and will be shipping soon in the Project 2007 Project Resource Kit)

    It's a Winforms application that uses the PSI to brute force calculate why a user does/doesn't have the correct permissions. This version only does Project Permissions but could be very easily modified to handle Resource and Global permissions. It uses the PSI to work out the permissions

    When you first start the application you'll get the following logon screen:

    image

    When you enter the URL you are presented with the main Form page:

    image

    There are three drop downs at the top of the page. One to select the User, the second to choose the relevant permission, and the third to choose the Project Name. One those details have been entered you just need to hit the 'EffectivizeName Possible my Rights' button. It then looks like the following:

    image

    The columns mean the following:

    Column Name Possible Values Purpose
    Right Allow/Deny The right specified for the selected Permission
    Object Present True/False Whether the object is explicitly added to the category. If not then it may be accessible through the Category rules
    Category Name N/A The name of the category giving the user permissions
    User/Group Name User name or the Group name If this is via the User then the User Name is displayed else we just display the name of the Group
    Applicable Rules

    · All current and future projects in Project Server database

    · Only the projects indicated

    · The User is the Project Owner or the User is the Status Manager on assignments within that Project

    · The User is on that project's Project Team, The Project Owner is a descendant of the User via RBS

    · A resource on the project's Project Team is a descendant of the User via RBS

    The Project Owner has the same RBS value as the User

    The rules specified by the Category that may be relevant to the effective Permission

    The rules specified by the Category that may be relevant to the effective Permission

    As you can see in the case above the following can be understood from this:

    · The effective right is Deny for this user, this permission on this project

    · The user is denied in 4 categories, 3 directly on the user, one through a group

    What it’s doing under the covers is going through the user object and working out what categories they have permissions on and whether the object exists and what permission the user has on those objects. It then goes through all the groups the user belongs to, works out what categories they have permissions on and calculates the same information. This will give the effective right the user has.

    Why do we have to go through every item to work out the effective right of the user? Unfortunately there isn’t a PSI that tells us the effective permission of a user other than the logged on user.

  • Project Programmability and Business Intelligence

    Tied Mode between Timesheet & My Tasks Solution Starter

    • 1 Comments

    Bonjour,

    An new version of the popular Tied Mode between Timesheet & My Tasks solution starter was published on CodePlex today:

    Project Server 2007 Timesheet Tied-Mode Service and Event: http://www.codeplex.com/AutoStatusService

    This new version give you the ability to import saved Timesheets into My Task in an asynchronous manner. For instance all TS imports could be scheduled during off peak hour at night for instance.

    The functionality is the same as the initial solution starter; how and when the updates are processed is what changed. This new version significantly improves the timesheet queue throughput as well as the overall system stability by reducing the load on Statusing.

    A special thank you to Mike Shughrue and Steven Haden from the EPM WW COE for creating and testing this solution starter. 

    If you are aware of any useful tools/solutions for Project and Portfolio Server 2007 and you would like to share them with the community via CodePlex please send me an email.


    About CodePlex

    CodePlex is Microsoft's open source project hosting web site. You can use CodePlex to create new projects to share with the world, join others who have already started their own projects, or use the applications on this site and provide feedback. A word about Microsoft’s role: Microsoft does not control, review, revise, endorse or distribute the third party projects on this site. Microsoft is hosting the CodePlex site solely as a web storage site as a service to the developer community.

    Q&A

    Q: Is the tool supported?

    A: There is no support in terms of CSS/PSS. We expect the support being a CodePlex community effort. Please note that the customization code uses standard supported web service calls available out of the box in EPM2007.

    Q: Is the tool free?

    A: Yes.

    Q: Can I distribute the tool and the source code to customers and partners?

    A: Customers and Partners can use both. Please point them to CodePlex as they have to agree on the license terms

    Q: Can a partner distribute the tool and code as is?

    A: No, but he can point his customer to the website to download it, so he makes sure that the customer agrees with the license terms.

    Q: Can a customer install the customization and use it?

    A: Yes the customer can, but he/she is responsible for testing it and running it.

    Q: Can I suggest changes to it?

    A: Yes, join the CodePlex community or send us an email: epmssdev@microsoft.com

    Q: Will this tool be distributed in other ways (i.e. DVDs)?

    A: No.

    Q: What skills do I need to modify or change the tool?

    A: C#, Project Server Interface, and a good understanding of the EPM 2007 data schema.

    Q: I’m trying to modify the code and do have questions. Who do I ask?

    A: Go to the Discussions forums on CodePlex.

    Q: What are all the EPM projects released on CodePlex?

    A. Check this: http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=epm

    Regards,

    Christophe Fiessinger

  • Project Programmability and Business Intelligence

    Canceling the Before Save Event

    • 2 Comments

    Hello,

    A good question came in yesterday; how to cancel the Project Before Save event in Project client:

    Public Sub GlobalApplication_ProjectBeforeSave(ByVal pj As Project, ByVal SaveAsUi As Boolean, Cancel As Boolean)
     
             Cancel = True
          
    End Sub

    (For demonstration and simplicity, this event handler just cancels all saves. You would most likely want to add validation and if it fails, cancel the save)

    Unfortunately the above code will not work. Instead, you will want to use ProjectBeforeSave2:

    Public Sub GlobalApplication_ProjectBeforeSave2(ByVal pj As Project, ByVal SaveAsUi As Boolean, Info As EventInfo)

             Info .Cancel = True

    End Sub

    Hope this helps,

    Chris Boyd

     

    Technorati tags: , ,
Page 4 of 11 (255 items) «23456»