Two MS Project fields are affected by the interface: Actual Work and Actual Cost. The interface updates the timescale section of the usage views (Resource Usage or Usage by Resource). It places one lump sum for a task/resource combination in this timescale area as the summary for the gathered period, based on the end date of the period. MS Project then summarizes those values and puts them in the Actual Work and Actual Cost fields. If you select multiple periods for the update process, the program summarizes each period and stores it separately. For information about the sources of the costs, refer to the "Where Do Actual Costs/Hours come from?" section.
When you perform the setup process and map your MS Project Resources to Costpoint resources, the mapping information is saved in the custom fields provided by Deltek. If you are using the Template (or a copy of it), those fields are grouped in the custom table called Costpoint in the Resource side of table collection.
If you are not using the Deltek-supplied template (in which case you must have followed the instructions in Appendix A), you do not have this table defined. However, the custom fields to make up this table are defined. Refer to "Create or modify a table" in the MS Project Help facility to create the table so that the fields are visible.
The setup process will create the following custom fields that are required for the mappings if they are not yet created:
Resource.Text1 |
Costpoint identification of resource |
Resource.Text1 |
Employee ID |
Resource.Text2 |
Vendor ID |
Resource.Text3 |
Vend_Empl ID |
Resource.Text4 |
GLC |
Resource.Text5 |
PLC |
Resource.Text6 |
Account |
Resource.Text7 |
Organization |
Resource.Text8 |
Group By |
Note that you do not have to have this table in your MS Project file (MPP) to run the interface. However, the existing mappings are preserved in this table so that you do not need to re-map each time you run the interface; instead, simply enter any changes or additions.
The update process imports values from the Costpoint worktables created by the Gather/Prepare step, using the date supplied when you selected the Import data through date in the Import screen. If the As of Date in any row in the worktable is the same as this date, or earlier, that row is selected. The As of Date is the Costpoint Subperiod Ending Date for the data that was gathered. You can select and gather data for multiple periods and process them with one update.
During the import process, the program makes three passes:
The first pass verifies that the projects selected for processing exist in MS Project by examining the WBS column in MS Project for the Costpoint project ID. If it does not exist, you have the option to add it.
Another pass is for labor processing, where the program selects rows with an Account Function Code of "2" in the worktable, and uses the labor mappings to match resources.
The last pass is for non-labor, where the program selects rows with Account Function Code of "3," and uses non-labor mappings to match resources.
The program skips rows without a matching resource. It examines rows with matching resources if their matching resources have been assigned to a specific task in the MS Project. If not, they are assigned to the task.
After the assignments are done, the program places current period hours and costs in the worktable into the timescale columns in MS Project. It places one lump sum for a task/resource combination in this timescale area as the summary for the gathered period, based on the end date of the period. MS Project then summarizes those values and puts them in the Actual Work and Actual Cost fields. If you select multiple periods for the update process, the program summarizes each period and stores it separately.
Other fields are customized and added to MS Project by the update process. If you are using the Deltek-supplied template (or a copy), you can find the Costpoint table in the Project side of MS Project as shown:
The following custom fields are updated by the update process:
Fiscal Year |
pjCustomTaskNumber1 |
Period |
PjCustomTaskNumber2 |
As Of |
pjCustomTaskDate1 |
Period Start |
PjCustomTaskDate2 |
Period Days |
PjCustomTaskNumber3 |
Period Hours |
PjCustomTaskNumber4 |
ITD Hours |
PjCustomTaskNumber5 |
Group By |
PjCustomTaskNumber6 |
Period Burden |
MSProject.pjCustomTaskCost1 |
ITD Burden |
MSProject.pjCustomTaskCost2 |
Period Cost Of Money |
MSProject.pjCustomTaskCost3 |
ITD Cost Of Money |
MSProject.pjCustomTaskCost4 |
Period Direct |
MSProject.pjCustomTaskCost5 |
ITD Direct |
MSProject.pjCustomTaskCost6 |
Period Fee |
MSProject.pjCustomTaskCost7 |
ITD Fee |
MSProject.pjCustomTaskCost8 |
Period T&M |
MSProject.pjCustomTaskCost9 |
ITD T&M |
MSProject.pjCustomTaskCost10 |
You do not have to have this table in your MS Project file (MPP) to run the interface, but it will allow you to check what constitutes Actual Costs. Depending on your choice of burden type, the program uses different fields to generate Actual Cost. The system creates these fields during the update process (if they are not already present). If the table is not already defined, refer to "Create or modify a table" in the MS Project Help facility.
This topic illustrates:
1. How actual costs are computed from the work file created by the Gather/Prepare phase of the interface processing.
2. How the values in the worktables are generated for the View Gathered tab of the interface after the Gather/Prepare phase is done.
Actual
Cost (non-labor) |
DIR_AMT_CUR_PD + BURD_ACT_CUR_AMT + COM_ACT_CUR_PD + FEE_ACT_CUR_PD |
Cost (labor) |
DIR_AMT_CUR_PD |
MS Project Actual Cost |
Non-labor cost + labor cost |
Target
Cost (non-labor) |
DIR_AMT_CUR_PD + BURD_TGT_CUR_AMT + COM_TGT_CUR_PD + FEE_TGT_CUR_PD |
Cost (labor) |
DIR_AMT_CUR_PD |
MS Project Actual Cost |
Non-labor cost + labor cost |
No burden
Cost (non-labor) |
DIR_AMT_CUR_PD |
Cost (labor) |
DIR_AMT_CUR_PD |
MS Project Actual Cost |
Non-labor cost + labor cost |
T&M
Cost (non-labor) |
TM_REV_CUR_PD |
Cost (labor) |
TM_REV_CUR_PD |
MS Project Actual Cost |
Non-labor cost + labor cost |
The following describes how the Gather process gathers data from Costpoint and puts it in the Z_CP_GATHER table (a worktable within Costpoint). You can see the gathered information in the View Gathered Data tab.
Three different types of rows are created from LAB_HS (Labor History), PROJ_SUM (Project Summary), and PSR_PY_SUM (Project Summary Report Prior Year Summary). These are: Labor with no burden, Non-labor with labor burden, and non-labor with non-labor burden. For each type, the application selects data for:
The Current Period (where the FY is the same as the fiscal year entered on the screen, the PD_NO is the same as the period entered on the screen, and the SUB_PD_NO is earlier than, or the same as, the sub-period entered),
Year-to-Date (where the FY is the same as the fiscal year entered and the PD_NO is earlier than the period entered), and
The Prior Year (where the FY is earlier than the fiscal year entered).
LAB_HS
Labor with no burden is summarized by:
PROJ_ID/ORG_ID/ACCT_ID/BILL_LAB_CAT_CD/GENL_LAB_CAT_CD
This information is selected from all rows in the LAB_HS table and coded as ACCT_FUNC_CD = "2". Also, the dollar values in T&M projects are zeroed out (keeping hours intact).
PROJ_SUM AND PSR_PY_SUM
Non-labor with labor burden is summarized by:
PROJ_ID/ORG_ID/ACCT_ID/L1_ACCT_SEG_ID
This information is selected from ACCT_FUNC_CD = ("2" or "11") in PROJ_SUM and PSR_PY_SUM and is coded as ACCT_FUNC_CD = "3."
PROJ_SUM AND PSR_PY_SUM
Non-labor with non-labor burden is summarized by:
PROJ_ID/ORG_ID/ACCT_ID/L1_ACCT_SEG_ID
This information is selected from ACCT_FUNC_CD = ("3" or "12") in PROJ_SUM and PSR_PY_SUM (PY) and is coded as ACCT_FUNC_CD = "3."
#1 = labor with no burden.
#2 = non-labor with labor burden.
#3 = non-labor with non-labor burden.
Type/period |
Consolidated |
Source Table For Values ($ and hrs) |
Lab_HS (#1) PROJ_SUM (#2, #3) PSR_PY_SUM (#2, #3) PY |
Smallest group unit (summarized) |
Vend_empl_id (#1) Acct_ID (#2, #3) |
1 PROJ_ID |
PROJ_ID |
2 ORG_ID |
ORG_ID |
3 ACCT_ID |
ACCT_ID |
4 L1_ACCT_SEG_ID |
L1_ACCT_SEG_ID (from ACCT table) |
5 FY_CD |
FY_CD |
6 PD_NO |
PD_NO |
7 SUB_PD_NO |
SUB_PD_NO |
8 ACCT_FUNC_NO |
2 (#1) or 3 (#2), (#3) |
9 BILL_LAB_CAT_CD |
BILL_LAB_CAT_CD from #1, NULL from #2, #3 |
10 BURD_ACT_CUR_AMT |
SUM (SUB_ACT_BURD_AMT) #2, #3 |
11 BURD_ACT_ITD_AMT |
SUM (SUB_ACT_BURD_AMT) + SUM (BURD_AMT) #2, #3 |
12 BURD_TGT_CUR_AMT |
SUM (SUB_TGT_BURD_AMT) #2, #3 |
13 BURD_TGT_ITD_AMT |
SUM (SUB_TGT_BURD_AMT) + SUM (BURD_AMT) #2, #3 |
14 COM_ACT_CUR_PD |
SUM (SUB_COM_ACT_AMT) #2, #3 |
15 COM_ACT_ITD |
SUM (SUB_COM_ACT_AMT) + SUM (COM_AMT)#2, #3 |
16 COM_TGT_CUR_PD |
SUM (SUB_COM_TGT_AMT) #2, #3 |
17 COM_TGT_ITD |
SUM (SUB_COM_TGT_AMT) + SUM (COM_AMT)#2, #3 |
18 DIR_AMT_CUR_PD |
Direct Labor (Acct Func CD = 2) SUM (ACT_AMT)#1 ODC (Acct Func CD = 3) SUM (SUB_DIR_AMT)#2 |
19 DIR_AMT_ITD |
Direct Labor (acct func CD = 2) SUM (ACT_AMT)#1 (period up to) ODC (acct func CD = 3) SUM (SUB_DIR_AMT) + SUM (DIR_AMT) #2, #3 |
20 EMPL_ID |
EMPL_ID from #1, NULL #2, #3 |
21 FEE_ACT_CUR_PD |
0 |
22 FEE_ACT_ITD |
0 |
23 FEE_TGT_CUR_PD |
0 |
24 FEE_TGT_ITD |
0 |
25 GENL_LAB_CAT_CD |
GENL_LAB_CAT_CD from #1, NULL from #2, #3 |
26 HRS_CUR_PD |
SUM (ACT_HRS) from #1, 0 from #2, #3 |
27 HRS_ITD |
SUM (ACT_HRS) from #1, 0 from #2, #3 |
28 TM_REV_CUR_PD |
SUM (ACT_HRS* REV_RT_AMT) from #1, 0 from #2, #3 |
29 TM_REV_ITD |
SUM (ACT_HRS* REV_RT_AMT) #1, 0 from #2, #3 |
30 VEND_EMPL_ID |
VEND_EMPL_ID from #1, NULL from #2, #3 |
31 VEND_ID |
VEND_ID from #1, NULL #2, #3 |
32 PROJ_NAME |
From PROJ_EDIT.PROJ_NAME |
33 AS_OF_DT |
SUB_PD.SUB_PD_END_DT |
34 PD_START_DT |
Last ACCTING_PD.PD_END_DT Plus 1 (day) |
35 PD_DAYS_NO |
Diff Between last PD_END_DT And current PD_END_DT |