Project and Portfolio Management Practitioners Forum
cancel
Showing results for 
Search instead for 
Did you mean: 

PPM Objects comparison

Highlighted
mdadok
Super Collector

PPM Objects comparison

Hi all,

 

Is there a way to compare two objects i.e request types to see what differes them?

Like for example you can take two text files run diff commnad and see the differences.

I'd like to know if anyone of you have any approach to do the comparison of two PPM objects.

 

Regards,

Maciek

3 REPLIES
AlexSavencu
Honored Contributor

Re: PPM Objects comparison

Hi,

 

one approach is to write SQL queries which grab the configuration information from the database and compares the entities.

 

another approach(much more complicated) is to export the entities to xml files using deployment management and compare the xml files.

 

cheers

alex


--remember to kudos people who helped solve your problem
mdadok
Super Collector

Re: PPM Objects comparison

Hi,

 

Yes - I tried second approach, but it's not as easy as comparing text files and very time consuming :(. I thought that there might be some other more straightforward approach.

 

Talking about first option, think that would need to produce a lot of sql code to compare a request type having many fields, validations etc. Perhaps, anyone already have such a script that could be used as a baseline?

 

Having only those two options I’m wondering how you guys maintain changes with regards to ETIL process and source control versioning. Is there anyone who stores entities in version control software like SVN, TFS or any other?

 

Regards,

Maciek

AlexSavencu
Honored Contributor

Re: PPM Objects comparison

Hi,

 

attaching sample code for getting field security configuration. Starting from such a SQL query, you can build your own for status dependencies, for example.

 

SELECT REQUEST_TYPE_NAME,
  SECTION,
  PROMPT,
  PARAM_TOKEN,
  NOTES_HISTORY_FLAG,
  CASE SECURITY_TYPE_CODE
    WHEN 'SECURITY_GROUP' THEN SECURITY_GROUP_NAME
    WHEN 'USER_ID' THEN TOKEN
  END RESPONSIBLE_ROLE,
 EDITABLE_FLAG
 
FROM
  (SELECT KRHT.REQUEST_TYPE_NAME Request_Type_Name,
    KS.SECTION_NAME SECTION ,
    KPS.PROMPT ,
    KPS.PARAMETER_TOKEN PARAM_TOKEN,
    KPS.NOTES_HISTORY_FLAG NOTES_HISTORY_FLAG,
    KPS.DISPLAY_FLAG DISPLAY,
    KPS.DISPLAY_ONLY_FLAG DISPLAY_ONLY,
    kfs.security_type_code SECURITY_TYPE_CODE,
    kfs.user_id,
    kfs.token_type_code ,
    kfs.token TOKEN,
    kfs.security_group_name SECURITY_GROUP_NAME,
    kfs.editable_flag EDITABLE_FLAG,
    kfs.enabled_flag
  FROM kcrt_request_types krht ,
    KNTA_VALIDATIONS KVA ,
    knta_parameter_set_contexts kpc ,
    Knta_Parameter_Set_Fields kps ,
    KNTA_SECTIONS KS ,
    knta_field_security_v kfs
  WHERE kva.validation_id = kps.validation_id
  AND kpc.context_value   = TO_CHAR(krht.request_type_id)
  AND krht.request_type_name LIKE 'YourRequestType%'
  AND kps.parameter_set_context_id = kpc.parameter_set_context_id
  AND KPS.SECTION_ID               = KS.SECTION_ID
  AND kps.enabled_flag             = 'Y'
  AND KPS.DISPLAY_FLAG             = 'Y'
  AND kps.parameter_set_field_id   = kfs.parameter_set_field_id (+)
  UNION
  SELECT KRHT.REQUEST_HEADER_TYPE_NAME Request_Type_Name,
    KS.SECTION_NAME SECTION ,
    KPS.PROMPT ,
    KPS.PARAMETER_TOKEN PARAM_TOKEN,
    KPS.NOTES_HISTORY_FLAG NOTES_HISTORY_FLAG,
    KPS.DISPLAY_FLAG DISPLAY,
    KPS.DISPLAY_ONLY_FLAG DISPLAY_ONLY,
    kfs.security_type_code SECURITY_TYPE_CODE,    
    kfs.user_id,    
    kfs.token_type_code,
    kfs.token TOKEN,
    kfs.security_group_name SECURITY_GROUP_NAME,
    kfs.editable_flag EDITABLE_FLAG,
    kfs.enabled_flag
  FROM kcrt_request_HEADER_types krht ,
    KNTA_VALIDATIONS KVA ,
    knta_parameter_set_contexts kpc ,
    Knta_Parameter_Set_Fields kps ,
    KNTA_SECTIONS KS ,
    knta_field_security_v kfs    
  WHERE kva.validation_id = kps.validation_id
  AND kpc.context_value   = TO_CHAR(krht.request_HEADER_type_id)
  AND krht.request_HEADER_type_name LIKE 'YourRequestHeaderType%'
  AND kps.parameter_set_context_id = kpc.parameter

 

cheers

alex


--remember to kudos people who helped solve your problem
//Add this to "OnDomLoad" event