Ravenbrook / Projects / Perforce Defect Tracking Integration

Perforce Defect Tracking Integration Project


Remedy Quality Management integration analysis

Gareth Rees, Ravenbrook Limited, 2001-12-04

1. Introduction

This document analyzes Remedy Quality Management [RQM], owned by Peregrine Systems, and estimates the work required to integrate it with Perforce using the P4DTI Integration Kit.

The intended readership is development staff and management deciding whether to fund such an integration.

This document is not confidential.

2. Background

Remedy Quality Management [RQM] contains a defect tracking system. It is an application of the Remedy Action Request System (RARS) and I believe that it is a component of the Remedy Customer Relationship Management System (RCRM).

RQM uses a three-tier architecture consisting of a database server (Oracle, Sybase and Microsoft SQL Server are supported), a "workflow data server" which applies the business rules (runs on Microsoft Windows NT, Sun Solaris or Hewlett-Packard HP-UX), and a client.

3. Analysis

This analysis follows the steps in [GDR 2000-10-16].

3.1. Extending the Remedy schema

To create a relation (form or schema in Remedy) using the Remedy API, use ARCreateSchema and then make a sequence of calls to ARCreateField to add fields to the relation.

To create a record (entry in Remedy), use ARCreateEntry.

*** It looks as though you are supposed to create a schema first and then create fields. But indexes have to be specified when you create the schema. So how do you do that?

3.2. Extending the issue relation

RQM looks like it has three kinds of issue relation: qual_Defect, qual_ProductIssue and qual_RFE [Remedy 2000b] (presumably "RFE" stands for "Request for enhancement").

We need to adopt a design that doesn't preclude replicating all of these. I suggest extending the issue relation by creating a separate table (as in the Bugzilla integration) — this has the advantage that P4DTI data is localized. This table would have fields for the issue relation and the issue id within that relation: this pair would be the primary key for the table.

The three kinds of issue relation are mostly identical: the field IDs are consistent between the relations. So most or all of the code could be shared.

3.3. Discovering what's changed

All Remedy tables have a "Last Modified Date" field (field id 6) that we might use to implement the second solution in [GDR 2000-10-16, 4.6].

*** This method is subject to race conditions. Does the Remedy API have transaction processing facilities that we could use?

*** This method might be very inefficient.

3.4. Distinguishing replicated changes from other changes

We might be able to use the "Last Modified Date" field to implement the third solution in [GDR 2000-10-16, 4.7].

*** This method is subject to race conditions. Does the Remedy API have transaction processing facilities that we could use?

3.5. Making changes on behalf of defect tracker users

Most Remedy API functions have a control parameter as their first argument. This parameter contains login and session information. So the Remedy API can be used to perform operations on behalf of a Remedy user and permissions are checked accordingly.

*** However, in order to perform an operation on behalf of another user using this feature, the P4DTI will need their password. This is unlikely to be acceptable.

3.6. Perforce users who don't have licences in the defect tracker

*** Don't know.

3.7. Python interface to Remedy

Here are six ways of getting at Remedy from Python:

Here are my best guesses as to how to perform necessary tasks using the Remedy API [Remedy 2000-08-04]:

3.8. Providing a Remedy interface to Perforce relations

*** Don't know. This might be possible through the Remedy API by modifying the defect schemas or creating appropriate join schemas.

A. References

[ActiveState 2001] "Win32 support for Python 2.0, build 138"; ActiveState; 2001 <http://www.activestate.com/Products/ActivePython/win32all.plex>.
[Benesch 2000-09] "Remedy API Automation v4.5"; Brad Benesch; Eftia; 2000-09.
[GDR 2000-10-16] "Perforce Defect Tracking Integration Integrator's Guide"; Gareth Rees; Ravenbrook Limited; 2000-10-16.
[Hammond 2000-01] "Python Programming on Win32"; Mark Hammond and Andy Robinson; OReilly; 2000-01; ISBN 1-56592-621-8.
[NDL 2001-11-21] "Re: Perforce Integration with REMEDY"; Nick Levine; Ravenbrook Limited; 2001-11-21.
[RQM] "Remedy Quality Management"; Peregrine Systems.
[Remedy 2000-08-04] "Action Request System 4.5 Programmer's Guide"; Remedy Corportation; 2000-08-04.
[Remedy 2000b] "Remedy Customer Relationship Management 4.5 Data Dictionary"; Remedy; 2000; <http://supportweb.remedy.com/docs/CRM/4.5/CRM%20Data%20Flow%20Diagrams/CRM%204.5%20Data%20Dictionary/CRM4.5DataDictionary.pdf>.
[Remedy 2001] "Remedy Enterprise Integration Engine 3.0"; Remedy Corporation; 2001; <http://supportweb.remedy.com/docs/CPU/Integrations/EnterpriseIntegrationEngine/3.0/manuals/devgd/eie3_devguide.pdf>.
[Widowfield] "Python-to-Remedy ARS Integration"; Tim Widowfield.
[Widowfield 2002-02-20] "Remedy Quality Management integration analysis" (e-mail message); Tim Widowfield; 2002-02-20.
[eGenix 2001] "mx Extensions for Python -- COMMERCIAL package"; eGenix; 2001.
[van Rossum 1999-04-13] "Extending and Embedding the Python Interpreter (release 1.5.2)"; Guido van Rossum; 1999-04-13.

B. Document History

2001-12-04 GDR Created.
2002-02-21 GDR Added integration approaches suggested by [Widowfield 2002-02-20].

Copyright © 2001 Ravenbrook Limited. This document is provided "as is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this document. You may make and distribute verbatim copies of this document provided that you do not charge a fee for this document or for its distribution.

$Id: //info.ravenbrook.com/project/p4dti/doc/2001-12-04/remedy-analysis/index.html#2 $

Ravenbrook / Projects / Perforce Defect Tracking Integration