Manage contributors button not visible in Smart assessment for TPRM Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } The Manage contributors button is not visible in the Smart assessment for TPRM. To reproduce the issue, navigate to a specific record link and observe that the button is missing in the Contributors section. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Not Release Specific. Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } AssessmentInstanceUtil Script Include was customized. Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 1. Verify if the Smart Assessment Collaboration plugin (com.sn_smart_collab) is installed and active, as it is required for the Manage Contributors button to appear.2. Confirm that users have the sn_smart_asmt.actor role to be selectable as contributors.3. If the button is still missing, upgrade all related smart assessment plugins to the latest version to resolve compatibility issues.4. Revert the customized AssessmentInstanceUtil Script Include to the base system (store) version to ensure the canReassign property is properly set in the API response.5. Review and adjust ACLs for the sn_smart_asmt.reassign role to restrict visibility to assessment owners, ensuring ownership checks are added where necessary. FAQs: Q1 - Is sn_smart_asmt.reassign directly linked to button visibility?Yes. The button shows when canReassign is true; canReassign = canWrite() on the assessor sn_smart_asmt_m2m_instance_persona row. That table has 4 write ACLs (OR-ed), one of which 066825c9 - grants write to any sn_smart_asmt.reassign holder who can merely read the assessment (answer = current.assessment_instance.canRead();), with no ownership check. So the role alone makes the button appear.Example: Bob (not the owner) holds a module role that contains sn_smart_asmt.reassign, and can read ASMT0001 → ACL 066825c9 passes → canWrite() true → canReassign true → Bob sees Manage Contributors. And even if you hid the button in script, Bob could still PATCH the persona record via Table API because that same ACL still grants him write.Q2 - Recommended approach to limit visibility to owners onlyThree levers, in order of safety/effectiveness:A. Role governance - no ACL/no code change (safest, upgrade-proof, recommended). Don't grant sn_smart_asmt.reassign or sn_smart_asmt.assessment_admin (or parent roles that contain them) to non-owners. On instance, audit sys_user_role_contains for children = reassign (2508ad89…) the parents are delivered by other modules and remove those grants from general users. This removes both the button and the underlying write, everywhere, with zero upgrade risk.B. Modify the ACL (data-layer, definitive, but a maintained customization). Tighten/deactivate ACL 066825c9 (add an ownership check, or disable if reassign isn't used) and add a primary_owner=[Me] condition to the unconditional assessment_admin ACL 749a4424. This actually revokes write (closes the Table-API/UI backdoor). Confirmed safe for assessment creation (creation uses privileged server-side GlideRecord.insert(), unaffected by write ACLs). Must be re-validated each upgrade; admin still overrides.C. Customize the script gate (AssessmentInstanceUtil override) weakest, incomplete. Hides the button and blocks the OOB endpoint, but does not remove ACL write access, so determined reassign/admin users can still reassign via direct API/UI. Only use in combination with A or B, never alone.Q3 - Any other roles that provide visibility?Yes, the union of the 4 write ACLs:sn_smart_asmt.actor → only when primary owner (ACL 281844a0, condition primary_owner=[Me]).sn_smart_asmt.assessment_admin → unconditionally on every assessment (ACL 749a4424, no condition) — broadest exposure.sn_smart_asmt.assessment_reader → only if the assessment requestor (ACL 68e7cc20).sn_smart_asmt.reassign → any assessment they can read (ACL 066825c9).admin → always (admin_overrides=true on all).Plus any parent role that contains reassign/assessment_admin (defined in other installed modules, per your "child role across modules" observation).