Manage Contributors button missing in Smart Assessment for TPRMIssue <!-- /*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. Navigating to a specific record and observing the Contributors section shows the button is missing. The root cause is a customization of the AssessmentInstanceUtil Script Include. 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: ; } } The 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 that 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 help resolve compatibility issues.4. Revert the customized AssessmentInstanceUtil Script Include to the base system version to help confirm 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, adding ownership checks where necessary. FAQs: Q1 - Is sn_smart_asmt.reassign directly linked to button visibility? Yes. The button appears when canReassign is true. canReassign equals canWrite() on the assessor sn_smart_asmt_m2m_instance_persona row. That table has four write ACLs (OR-ed), one of which grants write to any sn_smart_asmt.reassign holder who can merely read the assessment (answer = current.assessment_instance.canRead();), with no ownership check. 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. The write ACL passes, canWrite() returns true, canReassign is true, and Bob sees Manage Contributors. Even if the button is hidden in script, Bob could still PATCH the persona record via the Table API because that same ACL still grants him write. Q2 - Recommended approach to limit visibility to owners only Three options are available, in order of effectiveness: A. Role governance — no ACL or code change (upgrade-proof, should be the first option considered). Do not grant sn_smart_asmt.reassign or sn_smart_asmt.assessment_admin (or parent roles that contain them) to non-owners. On the instance, audit sys_user_role_contains for children equal to reassign — 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, addresses the root cause, but requires ongoing maintenance as a customization). Tighten or deactivate the write ACL that grants access to any sn_smart_asmt.reassign holder who can read the assessment (add an ownership check, or disable it if reassign is not used), and add a primary_owner=[Me] condition to the unconditional assessment_admin write ACL. This revokes write access and closes the Table API and UI backdoor. Confirmed safe for assessment creation, which uses privileged server-side GlideRecord.insert() unaffected by write ACLs. Must be re-validated after each upgrade; admin still overrides. C. Customize the script gate (AssessmentInstanceUtil override) — least complete on its own. Hides the button and blocks the base system endpoint, but does not remove ACL write access, so users with sn_smart_asmt.reassign or sn_smart_asmt.assessment_admin can still reassign via direct API or UI. Use only in combination with option A or B, never alone. Q3 - Any other roles that provide visibility? Yes. The union of the four write ACLs determines visibility: •sn_smart_asmt.actor — only when primary owner (condition: primary_owner=[Me]). •sn_smart_asmt.assessment_admin — unconditionally on every assessment (no condition) — broadest exposure. •sn_smart_asmt.assessment_reader — only if the user is the assessment requestor. •sn_smart_asmt.reassign — on any assessment the user can read. •admin — always (admin_overrides=true on all). Any parent role that contains sn_smart_asmt.reassign or sn_smart_asmt.assessment_admin, as defined in other installed modules, also provides visibility.