Skip to main content
1-Visitor
March 17, 2016
Question

Tool to export and import ACL from Policy Administrator

  • March 17, 2016
  • 1 reply
  • 5091 views

I am looking for tool to export ACL from Policy Administrator in excel format.

The exported file can be edited and then has to be imported back to Windchill system.

The Windchill system should show the changes made in ACL.

1 reply

13-Aquamarine
March 17, 2016

The query below can be executed from within Oracle SQL Developer and can be exported to excel from there.  Then you can generate a load file to remove and add the existing ACLs.  However you need to program your own "remove" command because there is NOT one available OOTB.  This is what I have used to modify all ACLs in all of our existing containers (1200+).

SELECT --A2.namecontainerInfo Context,
--A1.name ParentDomain,
A4.name ChildDomain,
case when instr(A0.classnamea5, '|') != 0 then
    'WCTYPE|' ||
    (select wttdm.inthid
      from wttypedefinitionmaster wttdm,
        controlbranch cb
      where cb.ida2a2 = substr(A0.classnamea5, instr(A0.classnamea5, '|')+1)
      and cb.ida3b5 = wttdm.ida2a2)
  else
    A0.classnamea5
  end as ClassName,
DECODE(A3.permissionType,'0','+','1','-','2','!','?') PermissionType,
A5.name Principal,
case
  when A3.permissionMask = '-1' then
    '-1'
  else
    regexp_replace(
    DECODE(BITAND(A3.permissionMask,'1'),'1','0/') ||
    DECODE(BITAND(A3.permissionMask,'1024'),'1024','10/')  ||
    DECODE(BITAND(A3.permissionMask,'2'),'2','1/')  ||
    DECODE(BITAND(A3.permissionMask,'2048'),'2048','11/')  ||
    DECODE(BITAND(A3.permissionMask,'65536'),'65536','16/')  ||
    DECODE(BITAND(A3.permissionMask,'8192'),'8192','13/')  ||
    DECODE(BITAND(A3.permissionMask,'4'),'4','2/')  ||
    DECODE(BITAND(A3.permissionMask,'32768'),'32768','15/')  ||
    DECODE(BITAND(A3.permissionMask,'128'),'128','7/')  ||
    DECODE(BITAND(A3.permissionMask,'256'),'256','8/')  ||
    DECODE(BITAND(A3.permissionMask,'4096'),'4096','12/')  ||
    DECODE(BITAND(A3.permissionMask,'16384'),'16384','14/')  ||
    DECODE(BITAND(A3.permissionMask,'512'),'512','9/')  ||
    DECODE(BITAND(A3.permissionMask,'32'),'32','5/')  ||
    DECODE(BITAND(A3.permissionMask,'64'),'64','6/'), '/$')
end Permissions,
A0.stateNameA5 State,
DECODE(A3.allExceptPrincipal,'0','FALSE','TRUE') AllExceptPrincipal,
DECODE(A3.permissionMask,'-1','1') FullControl_1,
DECODE(BITAND(A3.permissionMask,'1'),'1','1') Read_0,
DECODE(BITAND(A3.permissionMask,'1024'),'1024','1') Download_10,
DECODE(BITAND(A3.permissionMask,'2'),'2','1') Modify_1,
DECODE(BITAND(A3.permissionMask,'2048'),'2048','1') ModifyContent_11,
DECODE(BITAND(A3.permissionMask,'65536'),'65536','1') ModifyIdentity_16,
DECODE(BITAND(A3.permissionMask,'8192'),'8192','1') CreatByMove_13,
DECODE(BITAND(A3.permissionMask,'4'),'4','1') Create_2,
DECODE(BITAND(A3.permissionMask,'32768'),'32768','1') SetState_15,
DECODE(BITAND(A3.permissionMask,'128'),'128','1') Revise_7,
DECODE(BITAND(A3.permissionMask,'256'),'256','1') NewViewVersion_8,
DECODE(BITAND(A3.permissionMask,'4096'),'4096','1') ChangeDomain_12,
DECODE(BITAND(A3.permissionMask,'16384'),'16384','1') ChangeContext_14,
DECODE(BITAND(A3.permissionMask,'512'),'512','1') ChangePermissions_9,
DECODE(BITAND(A3.permissionMask,'32'),'32','1') Delete_5,
DECODE(BITAND(A3.permissionMask,'64'),'64','1') Administrative_6
FROM AccessPolicyRule A0,
AdministrativeDomain A1,
(SELECT A2.namecontainerInfo,A2.idA2A2 FROM ExchangeContainer A2 UNION ALL SELECT A2.namecontainerInfo,A2.idA2A2 FROM OrgContainer A2 UNION ALL SELECT A2.namecontainerInfo,A2.idA2A2 FROM WTLibrary A2 UNION ALL SELECT A2.namecontainerInfo,A2.idA2A2 FROM PDMLinkProduct A2) A2,
WTAclEntry A3,
AdministrativeDomain A4,
(SELECT A5.idA2A2,A5.name FROM WTGroup A5 UNION ALL SELECT A5.idA2A2,A5.name FROM WTOrganization A5 UNION ALL SELECT A5.idA2A2,A5.name FROM WTRolePrincipal A5 UNION ALL SELECT A5.idA2A2,A5.name FROM WTUser A5) A5,
WTAclEntry A6
WHERE (((A2.namecontainerInfo = 'Global Product Template') AND (A1.name = 'PDM') AND (A4.name = 'Default'))) 
AND ((A6.idA3B3 = A0.idA2A2)
AND (A6.idA2A2 = A3.idA2A2)
AND (A0.idA3domainRef = A4.idA2A2)
AND (A4.idA3containerReference = A2.idA2A2)
AND (A4.idA3domainRef = A1.idA2A2)
AND (A3.idA3A3 = A5.idA2A2));

13-Aquamarine
April 29, 2019

Hello Williams,

 

Does this SQL query need any modifications or can be used As-Is?

 

I tried using the same and couldn't get any values as output. Do you have any suggestions?

 

Regards,

Amar Karthi

1-Visitor
May 15, 2019

Oracle SQL Developer and can be exported to excel from there.  Then you can generate a load file to remove and add the existing ACLs.  However you need to program your own "remove" kissanime command because there is NOT one available OOTB.