It's all about the answers!

Ask a question

Using Item Connector Framework


Ankur Sharma (151194) | asked Oct 21 '08, 8:59 a.m.
Hi

We are using Item connector framework for making connector for our defect tracking system. I have a few queries regarding Item connector framework.(https://jazz.net/wiki/bin/view/Main/ItemConnectorCreation) The following are the queires:

1. In Item connector client, there are two implementation choices : as a 'plain java application' or as an 'eclipse plug-in'. Which of these two implementations we should follow? Any idea how is it done in CQ connector ? Note that as per jazz tutorial it is recommended that we should go for 'java application' implementation.

2. While synchronizing from Jazz to External repository (NOT from External repository to jazz), the synchronization process can be started either explicitly or after a fixed interval of time. Is there any other other way to invoke synchronization process e.g. on the basis of event etc. (as this can done while synchronizing from external repository to Jazz).

3. We are not able to find javadoc/code for 'Jazz Plain Java Client libraries'. It would be helpful if we can have some link for it.

Regards
Ankur Sharma

47 answers



permanent link
John Vasta (2.6k15) | answered Jan 16 '09, 5:41 p.m.
FORUM MODERATOR / JAZZ DEVELOPER
The Interop REST client library is just lighter weight (smaller), since it doesn't include much of the RTC client infrastructure. And I don't think we are supporting access to Jazz REST services in general yet, since those protocols are likely to change signficantly. Someone from the Jazz Foundation team will need to comment on the general availability of REST protocol access. I suggest starting a new thread, since it's not really related to connectors.

John
Jazz ClearQuest Connector Team

Hi John

Jazz Plain JAVA Client libraries also provide libraries for Interop REST client. And this is what CQ connector team has used in Jazz Gateway for handling interop events.
I want to know why Interop REST client is being used over general Interop Client ? What are the factors which decided to go for Interop REST client ? Also can you give provide some links from where I can start learning about these REST services in jazz and how to use in connector context.

permanent link
Ankur Sharma (151194) | answered Jan 20 '09, 3:35 p.m.
Hi John

I have defined my state mapping as following:

    Item Value- External Value
    Closed - canceled
    Closed - closed
    Verified - closed
    Resolved - closed
    Resolved - returned


That means for incoming synchronization when 'closed' is the external state, 'Closed' should be default value in jazz. But when I am trying for incoming synchronization, and external value is 'closed' the state of corresponding jazz workitem doesn't change to Closed, while incoming synchronization shows status OK.
Also when I removed the 4th mapping from sync rule, it was able to map the external 'closed' to jazz 'Closed' state as expected.

Why is this happening? Am I missing something ?

permanent link
John Vasta (2.6k15) | answered Jan 20 '09, 3:57 p.m.
FORUM MODERATOR / JAZZ DEVELOPER
What state is the work item in before the 'closed' state is sent in from your external system? The default value is only chosen if the destination does not already have a value that satisfies the possible mappings. In this case, you're saying that the external 'closed' value can map to 'Closed', 'Verified', or 'Resolved', so when the value 'closed' is sent in, if the work item is already in one of those states, no change will be made, since one of the allowed mappings already applies. It will only be changed if the work item state doesn't match any of the allowed mappings.

As you're developing your connector, you might find it useful to have debug logging for synchronization operations turned on in the the Jazz server. Assuming you're using the Tomcat deployment for the server, just add these two lines to the log4j.properties file that is in the 'server' directory where the Jazz server is installed:


log4j.logger.com.ibm.team.interop=DEBUG
log4j.logger.com.ibm.team.interop.service.outgoingSyncJob=OFF


Then restart the server. The log output will record whenever data is received from the external system, and how that gets transformed into work item updates.

John
Jazz ClearQuest Connector Team

Hi John

I have defined my state mapping as following:

    Item Value- External Value
    Closed - canceled
    Closed - closed
    Verified - closed
    Resolved - closed
    Resolved - returned


That means for incoming synchronization when 'closed' is the external state, 'Closed' should be default value in jazz. But when I am trying for incoming synchronization, and external value is 'closed' the state of corresponding jazz workitem doesn't change to Closed, while incoming synchronization shows status OK.
Also when I removed the 4th mapping from sync rule, it was able to map the external 'closed' to jazz 'Closed' state as expected.

Why is this happening? Am I missing something ?

permanent link
Ankur Sharma (151194) | answered Mar 09 '09, 5:52 a.m.
Hi John

Is there any plan for updating the existing documentation of Item Connector Framework ? The current available documentation of item connector framework works fine for getting started, but at various points it is not sufficient for explaining the things. Is there any task already opened for this. If not then I request you to please consider for providing documentation for Item connector framework as early as possible. Also there may be some changes in Item connector framework release with RTC 2.0, we'll need to know about them as well.

Also I need to know one more thing about Item connector framework. Does it provide support for mapping of 'approvals' of workitem with corresponding approval records in external repository? If yes, then can you please let us know how to get started with it ?

- Ankur

permanent link
John Vasta (2.6k15) | answered Mar 09 '09, 8:55 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
Hi Ankur,

I encourage you to submit a work item stating what you'd like to see in the documentation. Also, at this point there is no support for mapping 'approvals' to an external property, so please submit an enhancement request for that, if you'd like

John
Jazz ClearQuest Connector Team

Hi John

Is there any plan for updating the existing documentation of Item Connector Framework ? The current available documentation of item connector framework works fine for getting started, but at various points it is not sufficient for explaining the things. Is there any task already opened for this. If not then I request you to please consider for providing documentation for Item connector framework as early as possible. Also there may be some changes in Item connector framework release with RTC 2.0, we'll need to know about them as well.

Also I need to know one more thing about Item connector framework. Does it provide support for mapping of 'approvals' of workitem with corresponding approval records in external repository? If yes, then can you please let us know how to get started with it ?

- Ankur

permanent link
Ankur Sharma (151194) | answered Mar 25 '09, 3:10 a.m.
Hi John

Here is the opened enhancement for documentation of item connector framework :
https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=75759

Here is the opened enhancement for support approval mapping in item connector framework:

https://jazz.net/jazz/web/projects/Rational%20Team%20Concert#action=com.ibm.team.workitem.viewWorkItem&id=75761

- Regards
Ankur

permanent link
megha mittal (15112615) | answered Apr 07 '09, 2:47 a.m.
This question was missed in some earlier replies "Also there may be some changes in Item connector framework release with RTC 2.0, we'll need to know about them as well. "
Also is there any list available, that tells about the APIs that are changed in RTC 2.0 .

Please reply .

Thanks
Megha

permanent link
John Vasta (2.6k15) | answered Apr 07 '09, 3:34 p.m.
FORUM MODERATOR / JAZZ DEVELOPER
Changes in the Item Connector Framework APIs for RTC 2.0 are very minor, and are documented here:

https://jazz.net/wiki/bin/view/Main/ItemConnector20Changes

I don't think there is a list of other RTC/Jazz API changes at this point. I suggest posting a separate question to the forum asking that more general question.


This question was missed in some earlier replies "Also there may be some changes in Item connector framework release with RTC 2.0, we'll need to know about them as well. "
Also is there any list available, that tells about the APIs that are changed in RTC 2.0 .

Please reply .

Thanks
Megha

permanent link
Ankur Sharma (151194) | answered Apr 16 '09, 8:34 a.m.
Hi John,

First of all, Thanks for your always so helpful replies. As usual I am again here with another set of doubts. We were trying to create users in RTC corresponding to the users in external repository. Using Contributor manager I was able to create the 'User data' in jazz db. But couldn't login using these created users due to this error :

This user is not in the directory service. The user will not be able to login unless they have an account in the directory service. 


That mean To log in with the user, the username / password has to be configured in the External User Registry (which could be LDAP, Tomcat, or unknown/unsupported). So do we have to do it at our own or is it possible with Item Connector Framework, which I may be missing ?

Also for license management, repository permission for a user, adding user in some project Area/Team area, assigning user some role - does Item connector framework provides any support for any of this ? If not, then how to go about all this ?

How actually we are supposed to map users in external repository and RTC using Item Connector framework. Do we have to create users manually first in the RTC, assign them all the required permissions and then map them with the external users depending upon key field ?

While mapping 'Owned by' field of a workitem with external user name, what does the reference user sync rule do ? Does it refer to the user proxy using key field which is already mapped to the external user by itself Or do we need to somehow handle this reference sync rule in our code ?

Also I noticed that using 'modifiedBy' external property we don't need any reference sync rule, but it updates the history with the corresponding jazz user name. I made a user in RTC with same user id as of external user and during incoming sync the history was updated with this user name. Is this because in history the user name doesn't show link to 'user editor' and treated as simple text ?

- Ankur

permanent link
John Vasta (2.6k15) | answered Apr 16 '09, 9:23 a.m.
FORUM MODERATOR / JAZZ DEVELOPER
Hello again Ankur :-)

The Item Connector framework does not support the creation of login accounts for Jazz, but it does allow for the creation of user identity information, so that such information can be synchronized between Jazz and an external system. For example, if synchronizing with some bug-tracking system, you would generally want a bug logged in the external system that says "owned by Ankur" info to result in a work item in Jazz that also says "owned by Ankur". That doesn't mean that you would want to grant all users of the external system automatic login access to your Jazz server. That has to be arranged in some other way.

Depending on the type of user registry you use for Jazz, it may not even be possible to programmatically create login accounts. In fact, accounts can only be created if Jazz is running in Tomcat, using Tomcat's default user registry mechanism. If Tomcat is configured to use LDAP, or the Jazz server is running in WAS, accounts cannot be created via any Jazz API. You would need to somehow arrange for the accounts to be created in whatever user registry system you are using.

Note that it might be possible to configure both Jazz and the external system to use the same user registry. That's possible with ClearQuest, for example, so you can have a configuration where anyone that can login to ClearQuest can also login to Jazz.

To answer your specific questions:


Also for license management, repository permission for a user, adding user in some project Area/Team area, assigning user some role - does Item connector framework provides any support for any of this ? If not, then how to go about all this ?


No, the Item Connector framework provides no way to grant permissions or team area access to users.


How actually we are supposed to map users in external repository and RTC using Item Connector framework. Do we have to create users manually first in the RTC, assign them all the required permissions and then map them with the external users depending upon key field ?


If you want your external user community to also have login access and permissions in Jazz, you need to arrange for that in some way. Again, using the same LDAP repository for both of them helps a lot.


While mapping 'Owned by' field of a workitem with external user name, what does the reference user sync rule do ? Does it refer to the user proxy using key field which is already mapped to the external user by itself Or do we need to somehow handle this reference sync rule in our code ?


When a property mapping specifies a reference sync rule, it means that the value of the property is a reference to another type of object that is synchronized using that sync rule. So since the Owned By property of a work item is a reference to a Contributor item in Jazz, the "instructions" for mapping that Contributor item to some analogous external object are provided by the sync rule. The mapping is automatic; you don't have to do anything in your code to use that mechanism. The properties that are tagged as being "identifiers" are used as lookup keys to try and find existing objects to map to, and if none are found, a new object is created, if possible.


Also I noticed that using 'modifiedBy' external property we don't need any reference sync rule, but it updates the history with the corresponding jazz user name. I made a user in RTC with same user id as of external user and during incoming sync the history was updated with this user name. Is this because in history the user name doesn't show link to 'user editor' and treated as simple text ?


A property tagged with "external modifier" is assumed to have a string value which is a user identifier. During incoming synchronization, if there is a Jazz user with that identifier, then any operations that modify the Jazz item being synchronized are done as the identity of that user. This means that the user will be recorded as the "modifier" of the item in the item's history, and also that any permissions required to modify the item will be granted based on that user's roles in the relevant project and team areas. So the user name that you see in a history view isn't just text; it really is a reference to a Jazz user.

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.