Community Tip - New to the community? Learn how to post a question and get help from PTC and industry experts! X
I have a user who has Windchill Advanced license and does not have any other assigned profile. They reported that they cannot see the actions under Manage Replacements to create a substitute. I can but I am admin. They could before in 11.1 system so I suspect something with licensing or upgrade.
We turned on jcaDebug and saw this:
and I looked up the following article:
https://www.ptc.com/en/support/article/CS309967?source=search
I will check logs and but for the resolution on this, you can't edit the license profiles if that truly was the cause. I am sure the user has rights to create subs. They did check out the Assembly Part. Any other places to try?
Solved! Go to Solution.
So, I got it. It was the line below from roleaccessprefs.xml BUT I first missed it since it was the wrong section.
<uic name="MANAGE_PART_SUBSTITUTES" order="1104" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
There are multiple entries of this line. I needed the one that is in the <library> block since that is where substitute link objects are actually created.
It seems like they should have access:
I wonder if the profiles need to be reloaded...
I do not think its the profiles. I was able to replicate with a test user and the user I was working with confirmed. If they selected on a component from a different context than the assembly's context, for example a library component, the actions are missing. However, if that component is in the same context as the assembly, the substitute actions are there. I remember this since we noted this long ago. The user needs create/modify/etc rights on Part Substitute type in the area were the component exists, not the assembly part. The strange thing is that they should have it.
Here is how we did it. The user is a member of the "All Users" group. See below.
Now this group for "All Users" is a guest of the library since I want them to read but not modify the general content that is there. But then we added ACLs in the library to ensure they could create Part Substitutes:
A bit over zealous since we included the All Users group and Guests. Oh, oh wait, could it be the roleaccesspres.xml file?
<uic name="MANAGE_PART_SUBSTITUTES" order="1104" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
Let me pop over to my previous system and see if I missed an edit.
This was the only reference in PDMLink 11.1:
<!-- Replacement actions -->
<uic name="REMOVE_REPLACEMENT" order="1020" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
<uic name="ADD_ALTERNATE" order="1021" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
<uic name="ADD_SUBSTITUTE" order="1022" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
<uic name="ADD_SUPPLEMENTARY_REPLACEMENT" order="1023" enabled="true" defaultAll="false" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
There were no changes I made here. But this is what I see in the logs:
In -> getDefaultValueForUIC: UIComponent is <com.ptc.netmarkets.roleAccess.UIComponent@951ecdc>, isManager <false>, isGuest <true> 2023-01-31 11:14:24,036 DEBUG [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- retVal for uic: MANAGE_PART_SUBSTITUTES isManager: false isGuest: true 2023-01-31 11:14:24,036 INFO [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- isManager: false 2023-01-31 11:14:24,036 INFO [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- retVal: false 2023-01-31 11:14:24,036 INFO [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- isOrgOrSiteAdmin: false 2023-01-31 11:14:24,036 INFO [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- return retVal | isOrgOrSiteAdmin: false 2023-01-31 11:14:24,036 INFO [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- return HIDDEN 2023-01-31 11:14:24,037 DEBUG [ajp-nio-127.0.0.1-8010-exec-23] com.ptc.netmarkets.roleAccess.StandardNmRoleAccessService <user>- disabledDefault value taken from Config File default is :HIDDEN
Not sure why but its simple enough to test enabling guest to true for this action.
So, I got it. It was the line below from roleaccessprefs.xml BUT I first missed it since it was the wrong section.
<uic name="MANAGE_PART_SUBSTITUTES" order="1104" enabled="true" defaultAll="true" defaultManager="true" defaultGuest="false" managerEnabled="true" guestEnabled="false"/>
There are multiple entries of this line. I needed the one that is in the <library> block since that is where substitute link objects are actually created.