CA Project and Portfolio Management Connector For Sync [pre Sync 4.1]

This section explains how to connect to supported versions of CA PPM® using Tasktop’s CA Project and Portfolio Management Connector.

Configuring the CA Project and Portfolio Management Server for Tasktop Sync

Before using Tasktop Sync for CA Project and Portfolio Management, there are a few steps to follow to configure the CA Project and Portfolio Management server for integration with Tasktop Sync.

Create Proxy Association Attribute for CA Project and Portfolio Management

Tasktop Sync for CA Project and Portfolio Management requires a custom attribute to store proxy association information. Follow these instructions to create this attribute:

The new attribute will not be visible in the web UI by default and does not need to be exposed for Tasktop Sync for CA Project and Portfolio Management to work correctly.

Install Custom NSQL Scripts

For performance reasons, and to properly support the Tasktop Sync proxy association custom field, Tasktop Sync uses custom NSQL scripts on the CA Project and Portfolio Management server to retrieve Task details. NSQL queries are SQL-like scripts installed on a CA Project and Portfolio Management server, and are exposed via SOAP API. The CA Project and Portfolio Management Studio Developer’s Guide contains further information on NSQL.

Directions

In the CA Project and Portfolio Management web interface, navigate to Administration -> Studio -> Queries. For each of the four scripts listed in the following section, do the following:

NSQL Query Properties

NSQL Query Source

The queries are automatically available through the web service after saving.

The Scripts

TTSyncQuery_GetAssignments
Properties
Source
SELECT   @Select:DIM:USER_DEF:IMPLIED:ASSIGNMENT:A.PRUID:tt_AssignmentInternalID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRTASKID:tt_AssignmentTaskID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRRESOURCEID:tt_AssignmentResourceID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRISUNPLANNED:tt_AssignmentIsUnplanned@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRESTPATTERN:tt_AssignmentEstPattern@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRESTMAX:tt_AssignmentEstMax@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRPENDESTSUM:tt_AssignmentPendEstSum@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRPENDACTSUM:tt_AssignmentPendActSum@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRPENDSTART:tt_AssignmentPendStart@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRPENDFINISH:tt_AssignmentPendFinish@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRSTART:tt_AssignmentStart@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRFINISH:tt_AssignmentFinish@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRSTATUS:tt_AssignmentStatus@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRACTSUM:tt_AssignmentActSum@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRACTTHRU:tt_AssignmentActThru@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRESTSUM:tt_AssignmentEstSum@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRWDM:tt_AssignmentWdm@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PREXTENSION:tt_AssignmentExtension@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.SLICE_STATUS:tt_AssignmentSliceStatus@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.CURVE_STATUS:tt_AssignmentCurveStatus@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.ROLE_ID:tt_AssignmentRoleID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.TEAM_ID:tt_AssignmentTeamID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.CREATED_DATE:tt_AssignmentCreatedDate@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.CREATED_BY:tt_AssignmentCreatedBy@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.LAST_UPDATED_DATE:tt_AssignmentLastUpdatedDate@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.LAST_UPDATED_BY:tt_AssignmentLastUpdatedBy@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.ACTCOST_CURVE:tt_AssignmentActCostCurve@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.ACTCOST_SUM:tt_AssignmentActCostSum@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:A.PRID:tt_AssignmentID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:ASSIGNMENT:R.UNIQUE_NAME:tt_AssignmentResourceName@

FROM     PRASSIGNMENT A
,        SRM_RESOURCES R

WHERE    A.PRRESOURCEID = R.ID
AND      @FILTER@

TTSyncQuery_GetLookup
Properties
Source:
SELECT   @SELECT:DIM:USER_DEF:IMPLIED:RESOURCE:L.ID:LOOKUP_ID@,
         @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:L.LOOKUP_TYPE:LOOKUP_TYPE@,
         @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:L.LOOKUP_CODE:LOOKUP_CODE@,
         @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:L.LOOKUP_ENUM:LOOKUP_ENUM@,
         @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:L.NAME:LOOKUP_NAME@,
         @SELECT:DIM_PROP:USER_DEF:IMPLIED:RESOURCE:L.LANGUAGE_CODE:LOOKUP_LANG@
FROM     CMN_LOOKUPS_V L
WHERE    @FILTER@

TTSyncQuery_GetProjects
Properties
Source:
SELECT   @SELECT:DIM:USER_DEF:IMPLIED:PRJ:P.PRID:tt_ProjectInternalID@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PREXTERNALID:tt_ProjectExternalID@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRNAME:tt_ProjectName@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUID:tt_ProjectUID@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRGUIDELINES:tt_ProjectGUIDELINES@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRDEPARTMENT:tt_ProjectDEPARTMENT@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRVERSION:tt_ProjectVERSION@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT6:tt_ProjectUSERTEXT6@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT7:tt_ProjectUSERTEXT7@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRBUDGET:tt_ProjectBUDGET@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRSTART:tt_ProjectSTART@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRASOF:tt_ProjectASOF@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRFINISH:tt_ProjectFINISH@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRCPMTYPE:tt_ProjectCPMTYPE@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRTRACKMODE:tt_ProjectTRACKMODE@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRISOPEN:tt_ProjectISOPEN@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRCHARGECODEID:tt_ProjectCHARGECODEID@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRSPONSOREDBY:tt_ProjectSPONSOREDBY@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRREQUESTEDBY:tt_ProjectREQUESTEDBY@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRREQUESTEDTIME:tt_ProjectREQUESTEDTIME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRAPPROVEDTIME:tt_ProjectAPPROVEDTIME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT1:tt_ProjectUSERTEXT1@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT2:tt_ProjectUSERTEXT2@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT3:tt_ProjectUSERTEXT3@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT4:tt_ProjectUSERTEXT4@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRFORMAT:tt_ProjectFORMAT@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRFISCALSTART:tt_ProjectFISCALSTART@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERTEXT5:tt_ProjectUSERTEXT5@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRPCTCOMPLETE:tt_ProjectPCTCOMPLETE@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRPRIORITY:tt_ProjectPRIORITY@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRCLOSEDTIME:tt_ProjectCLOSEDTIME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRUSERNAME:tt_ProjectUSERNAME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRSIZEADJUST:tt_ProjectSIZEADJUST@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRSIZEADJUSTON:tt_ProjectSIZEADJUSTON@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRSTARTIMPOSED:tt_ProjectSTARTIMPOSED@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRFINISHIMPOSED:tt_ProjectFINISHIMPOSED@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRBASESTART:tt_ProjectBASESTART@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRBASEFINISH:tt_ProjectBASEFINISH@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRBASETIME:tt_ProjectBASETIME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRMODBY:tt_ProjectMODBY@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRMODTIME:tt_ProjectMODTIME@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.PRDESCRIPTION:tt_ProjectDESCRIPTION@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:P.IS_ACTIVE:tt_ProjectIS_ACTIVE@
,        @SELECT:DIM_PROP:USER_DEF:IMPLIED:PRJ:I.ASSGN_POOL:tt_ProjectASSGN_POOL@

FROM     PRPROJECT P
,        INV_INVESTMENTS I
WHERE    P.PRID = I.ID
AND      @FILTER@

TTSyncQuery_GetTasks
Properties
Source:
SELECT   @Select:DIM:USER_DEF:IMPLIED:TASK:T.PRID:tt_taskInternalID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.CREATED_BY:tt_TaskCreatedBy@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.CREATED_DATE:tt_TaskCreatedDate@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.EV_BCWP_OVR:tt_TaskEvBcwpOvr@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.EV_CALC_METHOD:tt_TaskEvCalcMethod@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.IS_OPEN_TE:tt_TaskIsOpenForTimeEntry@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.IS_PCT_DIRTY:tt_TaskIsPctDirty@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.LAST_CALC_RUN:tt_TaskLastCalcRun@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.LAST_RULE_RUN_ID:tt_TaskLastRuleRunID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.LAST_UPDATED_BY:tt_TaskLastUpdatedBy@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.LAST_UPDATED_DATE:tt_TaskLastUpdatedDate@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRCALCESTIMATE:tt_TaskCalcEstimate@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRCATEGORY:tt_TaskCategory@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRCHARGECODEID:tt_TaskChargeCodeID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRDURATION:tt_TaskDuration@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PREARLYFINISH:tt_TaskEarlyFinish@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PREARLYSTART:tt_TaskEarlyStart@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PREXTERNALID:tt_TaskExternalID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRFINISH:tt_TaskFinish@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRGUIDELINES:tt_TaskGuidelines@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISCRITICAL:tt_TaskIsCritical@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISFIXED:tt_TaskIsFixed@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISKEY:tt_TaskIsKey@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISLOCKED:tt_TaskIsLocked@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISMILESTONE:tt_TaskIsMilestone@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISTASK:tt_TaskIsTask@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRISUNPLANNED:tt_TaskIsUnplanned@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRLATEFINISH:tt_TaskLateFinish@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRLATESTART:tt_TaskLateStart@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRMETHODEXTID:tt_TaskMethodExtID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRNAME:tt_TaskName@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRPCTCOMPLETE:tt_TaskPctComplete@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRPRIORITY:tt_TaskPriority@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRPROJECTID:tt_TaskProjectInternalID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRSHORTNAME:tt_TaskShortName@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRSTART:tt_TaskStart@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRSTATUS:tt_TaskStatus@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRTOTALFLOAT:tt_TaskTotalFloat@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRUID:tt_TaskUID@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRUSERTEXT1:tt_TaskUserText1@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRWBSLEVEL:tt_TaskWbsLevel@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRWBSSEQUENCE:tt_TaskWbsSequence@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.PRWDM:tt_TaskWdm@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.WBS_NNBSEQ:tt_TaskWbsNnbSeq@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:T.WBS_PARSEQ:tt_TaskWbsParSeq@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:CUSTOM.TTSYNC_PROXYASSN:tt_TaskProxyAssn@
,        @Select:DIM_PROP:USER_DEF:IMPLIED:TASK:P.PREXTERNALID:tt_TaskProjectExternalID@

FROM     PRTASK T
,        PRPROJECT P
,        ODF_CA_TASK CUSTOM

WHERE    T.PRID = CUSTOM.ID
AND      P.PRID = T.PRPROJECTID
AND      @FILTER@

Configuring the CA Project and Portfolio Management Repository

Connecting to the CA Project and Portfolio Management Repository

Tasktop Sync must be configured to connect to the CA Project and Portfolio Management Repository through the Tasktop Sync Repository manager.

Add the CA Project and Portfolio Management repository to the Task Repositories view:

Add Task Repository menu option

Create Initialization and Changes Queries for CA Project and Portfolio Management

After the previous step, Tasktop Sync has been configured to connect to your CA Project and Portfolio Management server and you are ready to create the changes and initialization queries. Please consult the configuration section on creating queries for details on the purpose of the queries you will be creating.

Select New Query

Create a Task Mapping for CA Project and Portfolio Management

The final step in configuring Tasktop Sync for CA Project and Portfolio Management is to create a task mapping. Please consult the Task Synchronization Configuration section for detailed instructions on creating and editing task mappings.

Required Properties

Once the mapping is created, CA Project and Portfolio Management specific properties must be defined. The list of required properties is listed below. Properties are defined in the following way:

Recommended repository properties: .

Required Attribute Mappings

The External Task ID attribute must be set on all tasks being synchronized between CA Project and Portfolio Management and the other repository. See the Attribute Limitations section for more details. A mapping for the External Task ID attribute is required in order for this attribute to be set when Tasktop Sync synchronizes a new task into CA Project and Portfolio Management. The External Task ID attribute must be unique in the CA Project and Portfolio Management project. It is recommended to map External Task ID to the ID or Key attribute in the other repository. This mapping must be one way from the other repository into CA Project and Portfolio Management and must use the Initialize mapping strategy. In the synchronizer.xml file, the mapping should look similar to this:

        <attribute-mapping>
            <attribute id="task.common.key" strategy="initialize"/>
            <attribute id="id" strategy="ignore"/>
        </attribute-mapping>

The Internal Project ID attribute must be mapped in all task mappings. A value mapper can be used. The ID portion of the project attribute refers to the project’s internal ID (a number), not the external ID.

Task Assignments

With the CA Project and Portfolio Management connector for Tasktop Sync, you can synchronize attributes from an artifact on another system to the assignments of a task in Project and Portfolio Management, using a scripted attribute handler.

Handling Task Assignments in a Scripted Attribute Handler

In your attribute handler script, task assignments are represented as “assignment” attributes. By reading and modifying these assignment attributes you can manipulate the assignments of a task.

All assignment attributes have attribute type tasktop.type.assignment and have IDs following the pattern tasktop.assignment-[number]. An assignment attribute has two child attributes with IDs tasktop.assignment.assignee and tasktop.assignment.estimate, which, for Project and Portfolio Management, represent the resource ID and Estimated Time To Complete (ETC) of the task assignment, respectively.

To read or modify an existing task assignment you must get the assignment attribute for that assignment, and read or modify the values of its tasktop.assignment.assignee and tasktop.assignment.estimate child attributes.

To create a new task assignment you must create a new assignment attribute. Create a new task attribute under the root attribute of your task, and set its type to tasktop.type.assignment. Then create two child attributes with IDs tasktop.assignment.assignee and tasktop.assignment.estimate under that attribute, and set their values to whichever resource ID and ETC you like.

For an example of a scripted attribute handler for Project and Portfolio Management task assignments, see Synchronizing CA Project and Portfolio Management with Microsoft Team Foundation Server: Task Assignments.

Limitations and Other Notes on Task Assignments

A note about TasktopSync 2.8 users

We have changed how assignments are represented in TasktopSync 3.0.0, so if you have used assignment synchronization with a previous build, do ensure that your mappings and scripts follow the structure above.

Note on Start and Finish Date Defaults for Task and Task Assignment Creation

The Project and Portfolio Management connector will use the following default date values:

Tasks

Task Assignments

Limitations for CA Project and Portfolio Management

Feature Limitations

Tasktop Sync for CA Project and Portfolio Management only supports synchronizing Task objects. All tasks within the specified project will be synchronized. As there is no way to comment on a Task object within CA Project and Portfolio Management, comment synchronization is not supported. Currently, attachment synchronization is also not supported.

Attribute Limitations

External Task ID

Tasktop Sync for CA Project and Portfolio Management requires that the External Task ID attribute be set on all tasks. In the CA Project and Portfolio Management web UI, this attribute is called ID. Tasks without an External Task ID will not be synchronized and will end up in the error queue. Tasktop Sync for CA Project and Portfolio Management cannot change External Task ID after initialization. However, External Task ID may be changed via the CA Project and Portfolio Management web UI without causing problems. See Required Attribute Mappings section above for recommendations for the External Task ID attribute mapping.

Status and % Complete

The Status and % Complete attributes are linked in CA Project and Portfolio Management. Changes to the % Complete will be ignored if the task is not in the Started state. % Complete will be set to 0 if a task is moved to the Not Started state; it will be set to 100 if the task is moved to the Completed state. If this behavior is not enforced on the attributes from the other repository, mapping both Status and % Complete will lead to unexpected results. In this case, it is recommended to either not map the % Complete attribute or to map it one-way from CA Project and Portfolio Management into the other system. The Status attribute can then be mapped normally.

Read-only Attributes

The Last Updated Date attribute and the Internal Task ID attributes can be read from CA Project and Portfolio Management, but values cannot be set into them.

Custom Attributes

Custom attributes are not supported by Tasktop Sync for CA Project and Portfolio Management. Only standard attributes, those defined in a default CA Project and Portfolio Management installation, can be mapped.