It's all about the answers!

Ask a question

CQ Connector: Mapping a CQ field to the RTC Resolution


Chris Ratcliffe (2633130) | asked Jun 11 '09, 2:05 p.m.
I am seeing an odd behavior in CQ record to RTC syncronization through the CQ Connector.

I have created a custom workitem in RTC that has a very simple workflow with only 2 states, Opened and Closed. Each of my CQ states maps to one or the other. For example, in CQ I have a state called Canceled which maps to RTC Closed. In CQ, when the Canceled state is chosen, the user must choose a value in the Answer field. In my sync rule, I have a mapping of CQ State to RTC Status, and CQ Answer to RTC Resolution.

I have noticed that when a CQ record is updated such that:

1. The changes to the CQ State cause the RTC State to change from Opened to Closed, and
2. An attempt is made to map the Answer value to a Resolution value

The state changes ok, but the Resolution mapping doesn't work properly. For example, one of the Answer values is as_designed, and my sync rule maps that to the "Won't Fix" Resolution. But when I Cancel a defect, and set the Answer to as_designed, in RTC, after the sync, the work item is Closed, but he Answer says Fixed. I noticed that if I changed my mapping so that the Canceled CQ state doesn't map to Closed in RTC, which is to say that Canceling my CQ defect doesn't cause a state change in RTC, then the Answer to Resolution mapping works properly.

Is it possible that under the covers when the connector run the required action to move the RTC record from Opened to Closed, that the act of changing the state somehow triggers an automatic setting of Resolution that is overriding the mapping coming in from the CQ Answer field?

Here is my workflow definition:


<workflowDefinition id="IMCSWorkflow">
<workflow description="This workflow is used by item types that map to ClearQuest IMCS record types." name="IMCS Workflow" startActionId="IMCSWorkflow.action.a7">
<resolution icon="processattachment:/workflow/works.gif" id="IMCSWorkflow.resolution.r2" name="Works For Me"/>
<resolution icon="processattachment:/workflow/reject.gif" id="IMCSWorkflow.resolution.r1" name="Invalid"/>
<resolution description="The problem is resolved, but the specific fix is unknown." icon="processattachment:/workflow/resolve.gif" id="IMCSWorkflow.resolution.r11" name="Indirect Fix"/>
<resolution description="The fix has been applied but not verified yet." icon="processattachment:/workflow/inprogress.gif" id="IMCSWorkflow.resolution.r10" name="Unverified Fix"/>
<resolution icon="processattachment:/workflow/close.gif" id="IMCSWorkflow.resolution.r5" name="Fixed"/>
<resolution icon="processattachment:/workflow/duplicate.gif" id="IMCSWorkflow.resolution.r4" name="Duplicate"/>
<resolution icon="processattachment:/workflow/wontdo.gif" id="IMCSWorkflow.resolution.r3" name="Won't Fix"/>
<resolution description="The issue lies with third party code or a third party tool." icon="processattachment:/workflow/close2.gif" id="IMCSWorkflow.resolution.r9" name="Vendor Problem"/>
<resolution icon="processattachment:/workflow/defer.gif" id="IMCSWorkflow.resolution.r8" name="Later"/>
<resolution description="The fix applied was rejected." icon="processattachment:/workflow/reject2.gif" id="IMCSWorkflow.resolution.r12" name="Rejected Fix"/>
<resolution description="Used when mapping a blank CQ Answer field to the Resolution field." icon="processattachment:/workflow/unconfigure.gif" id="IMCSWorkflow.resolution.r13" name="To Be Determined"/>
<action icon="processattachment:/workflow/reopen.gif" id="IMCSWorkflow.action.a11" name="Reopen" state="IMCSWorkflow.state.s3"/>
<action icon="processattachment:/workflow/close.gif" id="IMCSWorkflow.action.a5" name="Close" state="IMCSWorkflow.state.s1">
<resolution id="IMCSWorkflow.resolution.r5"/>
<resolution id="IMCSWorkflow.resolution.r4"/>
<resolution id="IMCSWorkflow.resolution.r3"/>
<resolution id="IMCSWorkflow.resolution.r2"/>
<resolution id="IMCSWorkflow.resolution.r1"/>
<resolution id="IMCSWorkflow.resolution.r8"/>
<resolution id="IMCSWorkflow.resolution.r12"/>
<resolution id="IMCSWorkflow.resolution.r11"/>
<resolution id="IMCSWorkflow.resolution.r10"/>
<resolution id="IMCSWorkflow.resolution.r9"/>
</action>
<action icon="processattachment:/workflow/open.gif" id="IMCSWorkflow.action.a7" name="Submit" state="IMCSWorkflow.state.s3"/>
<state group="closed" icon="processattachment:/workflow/close.gif" id="IMCSWorkflow.state.s1" name="Closed" showResolution="true">
<action id="IMCSWorkflow.action.a11"/>
</state>
<state group="open" icon="processattachment:/workflow/open.gif" id="IMCSWorkflow.state.s3" name="Opened" showResolution="false">
<action id="IMCSWorkflow.action.a5"/>
</state>
</workflow>
</workflowDefinition>

15 answers



permanent link
Lorelei Ngooi (1.5k22) | answered Jun 11 '09, 9:32 p.m.
JAZZ DEVELOPER
Please include a copy of your sync rule so we can investigate this further.

permanent link
Chris Ratcliffe (2633130) | answered Jun 12 '09, 9:17 a.m.
Here is the exported xml for my sync rule:

<?xml version="1.0" encoding="utf-8"?>

<syncRule>
<name>rtc.clearquest.IMCS.Defect_To_IMCSWorkItems</name>
<externalTypeName>com.ibm.rational.clearquest.Defect</externalTypeName>
<syncItemTypeName>WorkItem</syncItemTypeName>
<syncItemTypeNsURI>com.ibm.team.workitem</syncItemTypeNsURI>
<syncItemTypeQualifier>TypeCategory:com.ibm.team.IMCS.workitem.standardType</syncItemTypeQualifier>
<itemManager>com.ibm.team.interop.service.managers.workitem.WorkItemManager</itemManager>
<externalManager>com.ibm.team.interop.service.managers.clearquest.CQExternalManager</externalManager>
<maxCycleCount>0</maxCycleCount>
<syncAllItemStates>true</syncAllItemStates>
<propertyMappings>
<propertyMapping>
<externalPropertyName>State</externalPropertyName>
<itemPropertyName>State</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<valueMappings>
<valueMapping>
<externalValue>Canceled</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Assigned</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Closed</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Delivered</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Duplicate</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Held</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Integrated</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Needs_Info</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Pending_Approval</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Postponed</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Rejected</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Returned</externalValue>
<itemValue>Closed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>UnAssigned</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Validated</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Working</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Opened</externalValue>
<itemValue>Opened</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Attachments</externalPropertyName>
<itemPropertyName>Attachments</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>url</externalPropertyName>
<itemPropertyName>attribute:smallString:cq_imcs_url</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Description</externalPropertyName>
<itemPropertyName>Description</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Target_Date</externalPropertyName>
<itemPropertyName>DueDate</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Classification</externalPropertyName>
<itemPropertyName>Type</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<valueMappings>
<valueMapping>
<externalValue>Code Defect</externalValue>
<itemValue>imcs_defect</itemValue>
<defaultExternalValue>true</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Documentation Defect</externalValue>
<itemValue>imcs_defect</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Feature</externalValue>
<itemValue>imcs_feature</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Non Defect Change</externalValue>
<itemValue>imcs_task</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>Test Case Defect</externalValue>
<itemValue>imcs_defect</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
<propertyMapping>
<externalPropertyName>id</externalPropertyName>
<itemPropertyName>attribute:smallString:cq_imcs_#</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Priority</externalPropertyName>
<itemPropertyName>Priority</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<valueMappings>
<valueMapping>
<externalValue>1</externalValue>
<itemValue>1 High</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>true</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>1</externalValue>
<itemValue>2 Medium</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>2</externalValue>
<itemValue>3 Medium</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>2</externalValue>
<itemValue>4 Medium</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>true</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>2</externalValue>
<itemValue>5 Medium</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>3</externalValue>
<itemValue>6 Low</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>true</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>3</externalValue>
<itemValue>7 Low</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>4</externalValue>
<itemValue>8 Low</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>4</externalValue>
<itemValue>9 low</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>true</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>4</externalValue>
<itemValue>10 Low</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Notes_Log</externalPropertyName>
<itemPropertyName>Comments</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<transformExtension>com.ibm.team.interop.service.managers.clearquest.WorkItemNotesValueTransformer</transformExtension>
<referenceSyncRule>rtc.clearquest.IMCS.users_To_Users</referenceSyncRule>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Submit_Date</externalPropertyName>
<itemPropertyName>CreationDate</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Keywords</externalPropertyName>
<itemPropertyName>Tags</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<transformExtension>com.ibm.team.interop.service.managers.clearquest.WorkItemTagsValueTransformer</transformExtension>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Originator</externalPropertyName>
<itemPropertyName>Creator</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<referenceSyncRule>rtc.clearquest.IMCS.users_To_Users</referenceSyncRule>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Owner</externalPropertyName>
<itemPropertyName>Owner</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<referenceSyncRule>rtc.clearquest.IMCS.users_To_Users</referenceSyncRule>
</propertyMapping>
<propertyMapping>
<externalPropertyName>State</externalPropertyName>
<itemPropertyName>attribute:IMCS_States:cq_imcs_state</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Component</externalPropertyName>
<itemPropertyName>Category</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<referenceSyncRule>rtc.clearquest.IMCS.Component_To_Category</referenceSyncRule>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Abstract</externalPropertyName>
<itemPropertyName>Summary</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Severity</externalPropertyName>
<itemPropertyName>Severity</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<valueMappings>
<valueMapping>
<externalValue>1</externalValue>
<itemValue>Blocker</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>1</externalValue>
<itemValue>Critical</itemValue>
<defaultExternalValue>true</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>2</externalValue>
<itemValue>Major</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>4</externalValue>
<itemValue>Minor</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>3</externalValue>
<itemValue>Normal</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
<propertyMapping>
<externalPropertyName>Answer</externalPropertyName>
<itemPropertyName>Resolution</itemPropertyName>
<incoming>true</incoming>
<outgoing>true</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties/>
<requiredExternalProperties/>
<valueMappings>
<valueMapping>
<externalValue>as_designed: The program works as designed.</externalValue>
<itemValue>Won't Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>deviation: Code or documentation will deviate from standards.</externalValue>
<itemValue>Won't Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>future: Future releases or versions will address this defect.</externalValue>
<itemValue>Later</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>hardware_error: The problem is caused by a hardware error.</externalValue>
<itemValue>Invalid</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>info_needed: More information is required.</externalValue>
<itemValue>Invalid</itemValue>
<defaultExternalValue>true</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>limitation: The problem is a current limitation.</externalValue>
<itemValue>Won't Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>suggestion: This is a suggestion, not an error.</externalValue>
<itemValue>Won't Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>unrecreatable: The problem cannot be recreated.</externalValue>
<itemValue>Works For Me</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>usage_error: The problem is caused by incorrect usage.</externalValue>
<itemValue>Invalid</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>valid_alpha_defect: Fix is being checked in directly to branch.</externalValue>
<itemValue>Invalid</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>npf: No plan to fix this defect.</externalValue>
<itemValue>Won't Fix</itemValue>
<defaultExternalValue>true</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>vendor_defect: Defect caused by vendor.</externalValue>
<itemValue>Vendor Problem</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>fixed: The problem is already fixed.</externalValue>
<itemValue>Indirect Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>duplicate: This is a duplicate of an existing defect.</externalValue>
<itemValue>Duplicate</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue/>
<itemValue>To Be Determined</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>verified_fix:</externalValue>
<itemValue>Fixed</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>rejected_fix:</externalValue>
<itemValue>Rejected Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
<valueMapping>
<externalValue>unverified_fix:</externalValue>
<itemValue>Unverified Fix</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
</propertyMappings>
</syncRule>

permanent link
Lorelei Ngooi (1.5k22) | answered Jun 12 '09, 11:23 a.m.
JAZZ DEVELOPER
I noticed in the sync rule that there is a CQ classification field that is mapped to the work item type field and that there are 3 different work item types. Do all the work item types have the same work flow?

permanent link
Chris Ratcliffe (2633130) | answered Jun 12 '09, 11:26 a.m.
Yes, all three of the IMCS_* work items use the same workflow.

permanent link
Lorelei Ngooi (1.5k22) | answered Jun 12 '09, 11:30 a.m.
JAZZ DEVELOPER
Please turn on logging in the jazz server so we can see what values are being synced in. Modify the log4j.properties file in the JazzTeamServer-install-directory\server directory by adding the following entry:

log4j.logger.com.ibm.team.interop=DEBUG

Then you'll need to restart the jazz server and CQ gateway.

permanent link
Lorelei Ngooi (1.5k22) | answered Jun 12 '09, 11:55 a.m.
JAZZ DEVELOPER
Also what version of the CQ Connector are you using?

permanent link
Chris Ratcliffe (2633130) | answered Jun 12 '09, 12:01 p.m.
Beta 2.

C:\Program Files\Rational\JAZZ CQ Connectors 2 Beta 2\jazz\connectors\gateway>cat buildId.txt
I20090520-1148

permanent link
Lorelei Ngooi (1.5k22) | answered Jun 12 '09, 1:03 p.m.
JAZZ DEVELOPER
I gave you the old directory for the jazz server log4j.properties file. It's now in /jazz/server/conf/jazz directory.

After you restart the jazz server and cq gateway, create a cq defect. Sync it into a jazz work item. Then transition your cq defect, set the answer field, and let that sync. Then look into the jazz.log file in the /jazz/server/logs directory. You're looking for an entry that says "Attempting incoming sync...". Somewhere after that, you should see "Applying properties to Jazz item:", then a list of the jazz properties that will be set and it's values. You should see something like this " {attribute:smallString:cq_state_attr=Resolved, State=Resolved, Resolution=Won't Fix}". Send that section of the log file to us.

permanent link
Chris Ratcliffe (2633130) | answered Jun 12 '09, 5:06 p.m.
Well, the trace provided some interesting information. I didn't notice the first time when I tried this, but when I started from scratch with a new cq defect, I noticed that I needed to do the following steps to make the error occur.

1. Create the defect in ClearQuest. Allow it to sync to RTC. CQ State = Opened, CQ Answer = "". RTC State = Opened, RTC Resolution = "".

2. Return the defect in CQ. Allow it to sync to RTC. CQ State = Returned, CQ Answer = "as_designed: ...". RTC State = Closed, RTC Resolution = "Won't Fix". (this is correct). Here is the information from the trace for that update:

: Attempting incoming sync; running as chrisr@ca.ibm.com
2009-06-12 12:19:36,344 DEBUG com.ibm.team.interop - ExternalProxy : Syncing in external state _92YxAFeFEd6uiLVW5f4NNQ
2009-06-12 12:19:36,344 DEBUG com.ibm.team.interop - ExternalProxy : Base external state id: _aeSVnldyEd6FGffBDT-oIw
2009-06-12 12:19:37,813 DEBUG com.ibm.team.interop - ExternalProxy : Last synced item state id: _JZAPoFdyEd6FGffBDT-oIw
2009-06-12 12:19:37,860 DEBUG com.ibm.team.interop - ExternalProxy : Applying properties to Jazz item:
{State=Closed, attribute:IMCS_States:cq_imcs_state=Returned, Resolution=Won't Fix}

3. Reopen the defect in ClearQuest. Allow it to sync to RTC. CQ State = Opened, CQ Answer = "". RTC State = Opened, RTC Resolution = "" (?). Not sure what the Resolution is changed to when the Answer field is blanked out.

UUID _6lc7wVdxEd6FGffBDT-oIw]: Attempting incoming sync; running as chrisr@ca.ibm.com
2009-06-12 12:20:40,875 DEBUG com.ibm.team.interop - ExternalProxy : Syncing in external state _HfSk8FeGEd6uiLVW5f4NNQ
2009-06-12 12:20:40,875 DEBUG com.ibm.team.interop - ExternalProxy : Base external state id: _92YxAFeFEd6uiLVW5f4NNQ
2009-06-12 12:20:40,984 DEBUG com.ibm.team.interop - ExternalProxy : Last synced item state id: __LxPgFeFEd6uiLVW5f4NNQ
2009-06-12 12:20:41,000 DEBUG com.ibm.team.interop - ExternalProxy : Applying properties to Jazz item:
{State=Opened, attribute:IMCS_States:cq_imcs_state=Opened}

I note that from the debug, it doesn't show the Resolution being set to anything. Not sure if that is related to the issue.

4. Return the defect in ClearQuest again. Allow it to sync to RTC. CQ State = Returned, CQ Answer = "as_designed: ...". RTC State = Closed, RTC Resolution should be "Won't Fix", but is getting set to "Fixed". Here is the debug:

: Attempting incoming sync; running as chrisr@ca.ibm.com
2009-06-12 12:21:45,296 DEBUG com.ibm.team.interop - ExternalProxy : Syncing in external state _RFzMMFeGEd6uiLVW5f4NNQ
2009-06-12 12:21:45,296 DEBUG com.ibm.team.interop - ExternalProxy : Base external state id: _HfSk8FeGEd6uiLVW5f4NNQ
2009-06-12 12:21:45,389 DEBUG com.ibm.team.interop - ExternalProxy : Last synced item state id: _Hi3dUFeGEd6uiLVW5f4NNQ
2009-06-12 12:21:45,405 DEBUG com.ibm.team.interop - ExternalProxy : Applying properties to Jazz item:
{State=Closed, attribute:IMCS_States:cq_imcs_state=Returned}

I notice that Resolution isn't being set to anything explicitly. Is the problem that the connectors aren't picking up the change to the Answer field on the CQ side?

Thanks,
Chris

permanent link
Lorelei Ngooi (1.5k22) | answered Jun 12 '09, 5:53 p.m.
JAZZ DEVELOPER
Yes, I agree the log provides some interesting information.

Try the following:
1. Add the Unresolved resolution to your workflow's list of resolutions. <resolution icon="processattachment:/workflow/unresolve.gif" id="r0" name="Unresolved"/>. Don't know yet if the id matters, but for now just copy this as is.
2. Don't add this resolution to any action's list of resolutions.
3. Modify the sync rule by adding the value mapping that maps the Unresolved resolution value to the CQ blank answer value:

<valueMapping>
<externalValue></externalValue>
<itemValue>Unresolved</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>

Remove the value mapping you had previously mapped to the blank answer value:

<valueMapping>
<externalValue/>
<itemValue>To Be Determined</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>

Your answer


Register or to post your answer.