| Sean's profileThe 7th (Sean Dai's Proj...BlogListsSkyDrive | Help |
|
|
November 21 Move Project Server 2003 & WSS 2.0 Workspace From One Server to Another Server Step by StepBefore move to the new servers
1. Make sure WSS, Project Server of two system on the same version
B. For WSS
Windows SharePoint Services v2
SharePoint Portal Server 2003
Unserviced pack
11.0.5608.0
11.0.5704.0
With Service Pack 1
11.0.6361.0
11.0.6715.0
SP1+KB887981
11.0.6411.0
R2 WSS SP2 Beta
11.0.6551.0
SP2
11.0.7969.0
11.0.8126.0
Post SP2 rollup
11.0.8000.0
11.0.8126.2
SP3
11.0.8173.0
11.0.8168.0 To find database schema version, you may open the globals table in configure database. The field SchemaVersion will be the database schema version.
Database Schema Version
Unserviced pack
6.0.2.5530
WSS SP1
6.0.2.6361
WSS SP1 + KB887981
6.0.2.6411
R2 WSS SP2 Beta
6.0.2.6551
WSS SP2
6.0.2.6568
WSS SP2 rollup KB900929
6.0.2.8000
WSS SP2 KB900929+KB924881
6.0.2.8117
WSS SP3
6.0.2.8165 http://mindsharpblogs.com/penny/articles/481.aspx
2. Restore Project Server database 3. Change Project Server database
4. Re-assign project user and projectserver user
5. Restore WSS Content database 6. Add content database to virtual server
Project Server 2003 PWA Menu CustomizationMicrosoft Project Server 2003 Web Access provides a mechanism for developer to customize the menu. However, any menu added by “server configuration” in admin page will no security validation, that all user can view it, even if it is under admin submenu.
Solution
The reason is that the default global permission of a custom menu is 0, which means every user has permission to view it. Since the PWA does not provide an interface to change the permission setting, the custom menu cannot act like other menus. However, the custom menu uses the same data structure as the build-in menu. Therefore developers can directly modify the database to make menu secure.
The project server database uses two tables to store the menu information, MSP_WEB_SECURITY_MENUS and MSP_WEB_SECURITY_PAGES. MSP_WEB_SECURITY_MENUS saves the information of each menu, such as menu ID, menu name, indicator that menu is a top-menu or submenu, sequence of menu, the web page a menu link to, and etc. MSP_WEB_SECURITY_PAGES saves the information of each page, such as URL of page and etc. Among them, there is a property, WSEC_PAGE_ACT_ID, which is the feature action ID of the menu, defined in MSP_WEB_SECURITY_FEATURES_ACTIONS.
When a developer added a custom menu to PWA, the project server will add a record in MSP_WEB_SECURITY_MENUS table and a record in MSP_WEB_SECURITY_PAGES table. By default, the WSEC_PAGE_ACT_ID is set to 0 of custom page. To make the page secure, developer can modify the value with any valid feature action ID. For example, a developer adds a function page in admin menu. It can be set as the same permission as “Manage Views” menu in admin menu. To set so, developer can simply set the WSEC_PAGE_ACT_ID to 730. Then the new page will have the permission setting as manage views page, and only those user who can manage views, have permission to view the new custom page. March 16 PDS with multiple hosted sites - Error 405 method not allowedProblem
I have a problem with PDS and an additional instance of Project Web Access (created with EditSite). I followed the description in pj11PDSref.chm and made a new copy of pds.wsdl and pds.wsml with the proper URL.
I am able to logon, but when i try to execute "ProjectsStatus" I get the error "... 405 method not allowed". The same application works fine with the "Main" Project Web Access. Solution
1. Ensure the MS SOAP Toolkit 3.0 is installed on your Project Server
2. Navigate into IIS 3. Right click on the original /projectserver virtual directory created during installation. 4. Click on Properties for the virtual directory 5. Click on the Configuration...button 6. Scroll all the way to the bottom and take note of the path of the "wsdl" extension This should be something like "c:\Program Files\Common Files\MSSOAP\BINARIES\SOAPIS30.dll" 7. Click cancel twice to return to the main IIS screen Now configure the new virtual directories: 1. Right click on the new virtual directory created using EditSite 2. Click on Properties for the new virtual directory 4. Click on the Configuration... button 5. Click Add... 6. Enter the path from step #6 above (with the quotes) 7. Enter GET, POST in the Limit To box 8. Enter wsdl in the Extension box 9. Click OK Twice. 10. Reset IIS.
This should fix your problem. February 20 Customize Issue on Homepage of PWAThe Issues list of WSS workspace has three status, Active Postpone and Closed. Clients may want to replace it with their values. The problem of custom status field is that PWA homepage would search WSS for "Active" issues(Risks). If there is no "Active" status for issue(risks), then the homepage can not be any issue. If we remove "Active.aspx" file from workspace template, the link of active issue will cause 404 error - page not found.
To custom status field and show proper issues in homepage, you have to do:
1. Change the status field as you want.
2. Open ".\Home\IssuesHome.asp" file and find IssueHome_Write function.
3. Find "nActive = GetIssuesCount(rsMyProjects, oStringsIssues.GetString(IDS_ISSUES_STATUS_ACTIVE), true);", the value "oStringsIssues.GetString(IDS_ISSUES_STATUS_ACTIVE)" is the specific status PWA will search on. You may replace it with any status string you want to search on.
3. Find "var sLink = '<A ID="idIssueProj' + nProjID + '" CLASS="link2" HREF="../Issues/IssueShell.asp?ProjID=' + nProjID + '&Frame=Active.aspx" TITLE="' + oStringsHome.GetString(IDS_HOME_ISSUES_ACTIVE_ALT) + '" ACCESSKEY="' + oStringsHome.GetString(IDS_HOME_ISSUES_ACTIVE_KEY) + '">';". The value "Frame=Active.aspx" is the view page that shows the issues. You may replace it with any view page you want. February 01 Customize WSS Role/User permission for Project Server 2003By default, project server will create four roles in WSS workspace and put users in corresponding roles. This is default setting:
However, clients may have different requirement. For example, let project manager be the web administrator of its own project workspace. Select/deselect one of the default permission of specific role. Project Server cannot customize the roles and users. If we change the role configuration in WSS, then after synchonization, the setting will be restored to default settings.
The customization can be done by modifing the project server ASP file. The permission of each role is defined in DOCLIB\STSADUTL.ASP, and the function name is StsAdminUtil_DoCustomSOAPToWSSOM. The mask defines the permission matrix. You may find the permission matrix in WSS SDK or as follows:
To change the permission or add more roles, you can modify the mask or the whole function. Also in STSADUTL.ASP file, StsAdminUtil_RoleUsers function defines who should be put in each role. You may change the function to change the user role. December 06 Close a project in EPMEPM system does not have ability to manage projects in all lifecycle. It can only manage a project when it is ongoing. When a project is finished, it does not have an indicator, and most important, it cannot remove the project from project list. As the result, project manager can still open the project, modify the project plan, and etc.
One way to avoid this is to remove the project from EPM system. However, we may need the project data for statistic. There is one way we can keep the project in EPM. Portfolio manager can view the data in OLAP cube, but the project manager cannot modify it, and team member cannot put any hours against project. To do so, we need: 1. Create a custom outline code in EPM global. This will act as an indicator to show the project status.
2. Open every project in Project Professional set the value of the custom outline code and republishes it. 3. Create a security, Closed Projects, which disables projects in the list for opening and viewing. 4. Open the finished projects in Project Professional to change the resource from committed to purposed. 5. Put those finished project in the Closed Projects. Then all finished projects will be removed from timesheet, project center, and project professional. However, for each finished project, it requires administrator to add it in the security. To improve it, there are several solutions:
1. Create a custom page in admin page of the PWA, which has a data grid to show all projects with closed status. Then administrator can select from the list, then click button to close the project. 2. Create a SQL agent that execute periodically, which close all projects with closed status. 3. Create a SQL trigger that execute immediately when project manager saves the project. If the project manager set the project status to be closed, then the trigger will close the project. Extend the OLAP cube for week in Time dimensionBy default, the OLAP cube of project server does not have week in time dimension. However, in real world, week is important. To add week into time dimension, we need to extend the standard OLAP cube building process.
In fact, the MSP_CUBE_TIME_BY_DAY table has already had week number in it. We can use it to create a new level in time dimension. However, to have more friendly interface, you may create additional column in MSP_CUBE_TIME_BY_DAY table as the display of the week level.
To extend the week, you need to do the following:
1. For all physical cube, delete time dimension if used and remember all the cube name.
2. For all virtual cube, delete time dimension if used and remember all the cube name.
3. Delete the time dimension
4. Create a new time dimension and create six levels of it.
5. Add the time dimension into the physical cube of step 1.
6. Add the time dimension into the virtual cube of step 2.
There is one thing you may need to know. When you remove or add a dimension from a physical cube, you need to reconstruct the join clause.
Here is the source code in VB6 for SQLServer 2000 database. If your database is SQLServer 2005, it may be a little different.
Synchronize AllPWA provides a function to synchronize the users between project server and SharePoint server, however, it only allow the administrator to synchronize one project at a time. If administrator wants to synchronize multiply projects or all projects, it would be time consuming.
Fortunately, PWA is an extendable framework, that we can extend PWA to support Synchronize multiple projects at a time. To extend the PWA for synchronizing all projects, we need to do: 1. Modify the ManageSTS.ASP page a. Add a button in the toolbar. b. Add a form with a hidden field in the page. c. Add an event handler for the button. 2. Copy the SyncUpUsers.ASP page as SyncUpAllUsers.ASP, and modify it to send a request for all projects. The original page can send one request, we only need to add a loop in the code so it can send multiply requests. Extend OLAP cube for Task - create virtual cubeMicrosoft provides a document and source code for extending OLAP cube for task data, however, they did not mention two things which are important for viewing a cube. One is to add all role in database level to cube level, Victor has already discussed it in his article. Another thing is to create virtual cube with project cube and resource cube. I will discuss it here.
Custom task cube only contains the task information, not associated with projects and resources. Normally people like to view data with project information, even resource. We need to create virtual cube for it.
Virtual cube, like view in database, is a logical structure that itself contains no data. In this extension, we will create two virtual cube, MSP_TASK_PORTFOLIO, which is based on task cube and project cube. Other is MSP_PORTFOLIO, which is based on all three physical cubes. The following is the sample code to create virtual cube:
Private Sub createPortfolioVirtualCube(dsoDatabase As DSO.MDStore)
Dim dsoVirtualCube As DSO.MDStore Dim dsoAssnCube As DSO.MDStore Dim dsoTaskCube As DSO.MDStore Dim dsoResCube As DSO.MDStore Dim dsoDim As DSO.Dimension Dim dsoMea As DSO.Measure Dim dsoNewMea As DSO.Measure Set dsoVirtualCube = dsoDatabase.MDStores.AddNew(VIRTUAL_PORTFOLIO, sbclsVirtual) Set dsoAssnCube = dsoDatabase.MDStores(ASSN_CUBE) Set dsoTaskCube = dsoDatabase.MDStores(TASK_CUBE) Set dsoResCube = dsoDatabase.MDStores(RES_CUBE) For Each dsoDim In dsoTaskCube.Dimensions dsoVirtualCube.Dimensions.AddNew (dsoDim.Name) Next For Each dsoDim In dsoAssnCube.Dimensions If dsoVirtualCube.Dimensions(dsoDim.Name) Is Nothing Then dsoVirtualCube.Dimensions.AddNew (dsoDim.Name) End If Next For Each dsoDim In dsoResCube.Dimensions If dsoVirtualCube.Dimensions(dsoDim.Name) Is Nothing Then dsoVirtualCube.Dimensions.AddNew (dsoDim.Name) End If Next For Each dsoMea In dsoTaskCube.Measures Set dsoNewMea = dsoVirtualCube.Measures.AddNew(dsoMea.Name) dsoNewMea.SourceColumn = "[" & TASK_CUBE & "].[" & dsoMea.Name & "]" Next dsoVirtualCube.Update dsoVirtualCube.Process End Sub Task Flag can roll up to Project FlagCustom Flag field is different from other custom fields, since the task flag field can roll up to project flag field. For example, if you set task flag 1 to roll up to summary task, then the project flag 1 will be changed by task flag settings. August 11 ProjectViewTablesCreateThe data in PWA is stored in MSP_WEB_WORKGROUP_FIELD table. The ProjectViewTablesCreate method will recreate the records in the table. However, it does not create calculate fields, fields with graphics indicator or number field with value list. Programming LoginBy using the managed code in InfoPath, we have to use HttpWebRequest to make a connection, while in InfoPath JScript code, we can use XML to get Cookie.
For Window Authentication, the following three files have to uncheck the anonymous access and check the window integrated:
For Project server authentication, the following three files have to check the anonymous access and the window integrated:
MI issues in PDSThere are something we cannot do with build-in PDS functions.
Get User from NT AccountTo get user name in Project Server by NT account, we have to use two PDS calls, PSGroupsGet and PSGetUsersInGroup. The PSGroupsGet can retrieve all groups in Project Server and the PSGetUsersInGroup can retrieve all users in a specific group. Create Sub TasksTo create sub task of the existing task, we can use ProjectTasksCreate Method. Different from a top level task, we have to specify the subtask ID and the outlinelevel. The subtask ID should be the correct ID in the task list, and the all tasks that have larger ID will increased by 1.
For example: we have tasks, A1, A2 and A3. we want to insert task A2.1 as the first subtask of A2. The ID of A2.1 should be set as 3, and the outlinelevel is 2. After PDS done, the original A3 ID will be changed to 4, and A2.1 will be the subtask of A2. 4 Error in PDS ServiceIf the PDS client sends server a wrong XML request, it will return error code 4 9006 Error in PDS service9006 error is a security exception error, which does not have description in official document. However, I found if the client call Soap server with a blank cookie, the server will return 9006 error. Error in ProjectCreate PDS serviceThe response XML is different from the official document by Microsoft. The response XML is as follows:
<Reply>
<HRESULT></HRESULT> <STATUS></STATUS> <UserName></UserName> <ProjectCreate>
<Project> <ProjectName></ProjectName> <ProjectID></ProjectID> </Project> </ProjectCreate> </Reply> Limitation of Custom Number FieldMost interesting thing in Project Server: the custon number field in Project Server has a limitation of 21,474,837, although the definition in database is setted to integer, which can contain 10-digit number. However, user can input number larger than that MAGIC number. When user publish the project with larger number, the corresponding record in view table will disappear. |
|
|