sync rule to include a default Category (Filed Against)
Hi,
I am trying to set up my sync rule such that the Filed Against attribute for the work item will get set to a specific default value, regardless of any settings in the ClearQuest record. I created the following Property/Value Mappings:
However, all of my syncs are failing with the error:
Incoming at 6/23/09 3:31:34 PM EDT
Error occurred:
java.lang.RuntimeException: The value "CQ IMCS" for property "Category" is invalid; it must be a single item identifier (UUID)
at com.ibm.team.interop.service.AbstractInteropItemManager.decodeReferences(AbstractInteropItemManager.java:270)
at com.ibm.team.interop.service.managers.workitem.InteropWorkItemManager.setProperty(InteropWorkItemManager.java:1354)
at com.ibm.team.interop.service.managers.workitem.InteropWorkItemManager.saveState(InteropWorkItemManager.java:523)
at sun.reflect.GeneratedMethodAccessor232.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy223.saveState(Unknown Source)
at com.ibm.team.interop.service.internal.ItemManagerProxy.saveState(ItemManagerProxy.java:124)
at com.ibm.team.interop.service.internal.InteropService.doSynchronizeIncoming(InteropService.java:3644)
at com.ibm.team.interop.service.internal.InteropService.processIncoming(InteropService.java:2056)
at sun.reflect.GeneratedMethodAccessor219.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy138.processIncoming(Unknown Source)
at com.ibm.team.interop.service.internal.ProxySyncTask.processRequest(ProxySyncTask.java:431)
at com.ibm.team.interop.service.internal.ProxySyncTask.processRequestQueue(ProxySyncTask.java:389)
at com.ibm.team.interop.service.internal.ProxySyncTask.transactionSucceeded(ProxySyncTask.java:258)
at sun.reflect.GeneratedMethodAccessor191.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy140.transactionSucceeded(Unknown Source)
at com.ibm.team.repository.service.internal.AsynchronousTaskSchedulerService$2.transactionSucceeded(AsynchronousTaskSchedulerService.java:559)
at com.ibm.team.repository.service.internal.AsynchronousTaskSchedulerService$2.executeTask(AsynchronousTaskSchedulerService.java:567)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.runTask(AsynchronousTaskRunner.java:118)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.run(AsynchronousTaskRunner.java:92)
at java.lang.Thread.run(Thread.java:810)
I don't understand what this error is telling me. The "CQ IMCS" Category is definitely defined in my Project Area.
Thanks,
Chris
I am trying to set up my sync rule such that the Filed Against attribute for the work item will get set to a specific default value, regardless of any settings in the ClearQuest record. I created the following Property/Value Mappings:
<propertyMapping>
<externalPropertyName></externalPropertyName>
<itemPropertyName>Category</itemPropertyName>
<incoming>true</incoming>
<outgoing>false</outgoing>
<itemIdentifier>false</itemIdentifier>
<externalIdentifier>false</externalIdentifier>
<externalModifier>false</externalModifier>
<requiredItemProperties></requiredItemProperties>
<requiredExternalProperties></requiredExternalProperties>
<transformExtension>com.ibm.team.interop.service.managers.workitem.CategoryValueTransformer</transformExtension>
<valueMappings>
<valueMapping>
<externalValue></externalValue>
<itemValue>CQ IMCS</itemValue>
<defaultExternalValue>false</defaultExternalValue>
<defaultItemValue>false</defaultItemValue>
</valueMapping>
</valueMappings>
</propertyMapping>
However, all of my syncs are failing with the error:
Incoming at 6/23/09 3:31:34 PM EDT
Error occurred:
java.lang.RuntimeException: The value "CQ IMCS" for property "Category" is invalid; it must be a single item identifier (UUID)
at com.ibm.team.interop.service.AbstractInteropItemManager.decodeReferences(AbstractInteropItemManager.java:270)
at com.ibm.team.interop.service.managers.workitem.InteropWorkItemManager.setProperty(InteropWorkItemManager.java:1354)
at com.ibm.team.interop.service.managers.workitem.InteropWorkItemManager.saveState(InteropWorkItemManager.java:523)
at sun.reflect.GeneratedMethodAccessor232.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy223.saveState(Unknown Source)
at com.ibm.team.interop.service.internal.ItemManagerProxy.saveState(ItemManagerProxy.java:124)
at com.ibm.team.interop.service.internal.InteropService.doSynchronizeIncoming(InteropService.java:3644)
at com.ibm.team.interop.service.internal.InteropService.processIncoming(InteropService.java:2056)
at sun.reflect.GeneratedMethodAccessor219.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy138.processIncoming(Unknown Source)
at com.ibm.team.interop.service.internal.ProxySyncTask.processRequest(ProxySyncTask.java:431)
at com.ibm.team.interop.service.internal.ProxySyncTask.processRequestQueue(ProxySyncTask.java:389)
at com.ibm.team.interop.service.internal.ProxySyncTask.transactionSucceeded(ProxySyncTask.java:258)
at sun.reflect.GeneratedMethodAccessor191.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:378)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:364)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy140.transactionSucceeded(Unknown Source)
at com.ibm.team.repository.service.internal.AsynchronousTaskSchedulerService$2.transactionSucceeded(AsynchronousTaskSchedulerService.java:559)
at com.ibm.team.repository.service.internal.AsynchronousTaskSchedulerService$2.executeTask(AsynchronousTaskSchedulerService.java:567)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.runTask(AsynchronousTaskRunner.java:118)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.run(AsynchronousTaskRunner.java:92)
at java.lang.Thread.run(Thread.java:810)
I don't understand what this error is telling me. The "CQ IMCS" Category is definitely defined in my Project Area.
Thanks,
Chris
3 answers
So I found this information:
https://jazz.net/wiki/bin/view/Main/CQConnectorFAQ#Incoming_sync_error_invalid_UUID
which indicates that my mapping is failing because the map isn't properly identifying the UUID of the Category. How do I determine the UUID of the Category? None of the 3 techniques typically used for syncing the category are what I want to do, because as I mentioned, I would like to set all new synced objects to a specific Category.
https://jazz.net/wiki/bin/view/Main/CQConnectorFAQ#Incoming_sync_error_invalid_UUID
which indicates that my mapping is failing because the map isn't properly identifying the UUID of the Category. How do I determine the UUID of the Category? None of the 3 techniques typically used for syncing the category are what I want to do, because as I mentioned, I would like to set all new synced objects to a specific Category.
Adding value mappings to a property mapping that uses the category value transformer is not supported in RTC 1.0.X.X, but it is in RTC 2.0. See this work item for the details:
https://jazz.net/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/56728
The mapping you posted will almost work in RTC 2.0; the only thing you'd need to change is to assign some external property name that doesn't actually exist as a CQ field (e.g. "dummy"). It turns out that the name cannot be empty, or the mapping will be ignored.
https://jazz.net/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/56728
The mapping you posted will almost work in RTC 2.0; the only thing you'd need to change is to assign some external property name that doesn't actually exist as a CQ field (e.g. "dummy"). It turns out that the name cannot be empty, or the mapping will be ignored.