{"id":31401,"date":"2025-10-30T05:54:47","date_gmt":"2025-10-30T05:54:47","guid":{"rendered":"https:\/\/www.greytrix.com\/blogs\/sagex3\/?p=31401"},"modified":"2025-11-29T19:30:40","modified_gmt":"2025-11-29T19:30:40","slug":"restricting-user-access-to-specific-sites-in-sage-x3","status":"publish","type":"post","link":"https:\/\/www.greytrix.com\/blogs\/sagex3\/2025\/10\/30\/restricting-user-access-to-specific-sites-in-sage-x3\/","title":{"rendered":"Restricting User Access to Specific Sites in Sage X3"},"content":{"rendered":"\n<p>When multiple sites operate under a single Sage X3 environment, giving every user access to all sites can lead to unnecessary complexity and security risks. With row-level permissions, administrators can precisely restrict users\u2019 access to one or a few sites based on their roles. This blog demonstrates how to implement these restrictions efficiently and maintain operational control.<\/p>\n\n\n\n<p>In multi-site <a href=\"https:\/\/www.greytrix.com\/sage-x3-erp\/development-services\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.greytrix.com\/sage-x3-erp\/development-services\/\" rel=\"noreferrer noopener\">Sage X3<\/a> environments, administrators often need to confine certain users to specific operational sites. This is primarily managed through Row-Level Permissions or Functional Authorizations. This guide explains how to implement such restrictions effectively while maintaining data integrity.<\/p>\n\n\n\n<p><strong>Method 1<\/strong>: Restrict via Row-Level Permissions<\/p>\n\n\n\n<p>If an individual user should be confined to one or a small number of sites, you can utilize Row-Level Permissions. These permissions are configured in two key areas of the system: <\/p>\n\n\n\n<p>under Setup \u2192 Users \u2192 Row Level Permissions (to define permission codes) and within Setup \u2192 Users \u2192 Users \u2192 Organization tab (where you assign restrictions per user).<\/p>\n\n\n\n<p><strong>New stuff:<\/strong> <a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2025\/10\/29\/validation-on-non-existing-po-field-in-supplier-bp-invoice-screen\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2025\/10\/29\/validation-on-non-existing-po-field-in-supplier-bp-invoice-screen\/\" rel=\"noreferrer noopener\">Validation on Non Existing PO field in Supplier BP Invoice Screen<\/a><\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-1.-Row-Level-Permissions-1024x250.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-1.-Row-Level-Permissions-1024x250.png\" alt=\"Fig 1. Row level permissions\"><\/a><\/center>\n<font size=\"2\"><center>Fig 1. Row level permissions<\/center><\/font>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/fIG-2.-User-wise-row-level-permissions.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/fIG-2.-User-wise-row-level-permissions.png\" alt=\"Fig 2. User wise row level permissions\"><\/a><\/center>\n<font size=\"2\"><center>Fig 2. User wise row level permissions<\/center><\/font>\n\n\n\n<p>For instance, to limit a user to a specific site:<\/p>\n\n\n\n<p>1. Access Setup \u2192 Users \u2192 Row Level Permissions.<br>2. Search for the code linked to site-specific controls. Typically, this is &#8216;FCY&#8217; used across multiple functions (e.g., POH, SOH).<br>3. Assign &#8216;FCY&#8217; as the permission code for the selected user.<br>4. Under the Organization tab, specify the Key value (for example, NA10) corresponding to the desired site and save your changes.<\/p>\n\n\n\n<p>Once configured, logging in as this user will display only the assigned site (e.g., NA10) when performing actions such as creating purchase or sales orders. Note that Row-Level Permissions take precedence over any functional authorization settings.<\/p>\n\n\n\n<p>If I log in as the user and go to Purchasing, Orders, Orders and click on New, I will see that the only site available to the user is NA011.<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-3.-PO-filtered-for-site-NA011.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-3.-PO-filtered-for-site-NA011.png\" alt=\"Fig 3. PO filtered for site NA011\"><\/a><\/center>\n<font size=\"2\"><center>Fig 3. PO filtered for site NA011<\/center><\/font>\n\n\n\n<p><strong>Method 2: <\/strong>Limiting Access via Functional Authorizations<\/p>\n\n\n\n<p>When dealing with multiple users sharing the same function profile, using Functional Authorizations is more efficient. You can manage this from Setup \u2192 Users \u2192 Function Profile.<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-4.-Functional-profile-1024x241.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-4.-Functional-profile-1024x241.png\" alt=\"Fig 4. Functional profile\"><\/a><\/center>\n<font size=\"2\"><center>Fig 4. Functional profile<\/center><\/font>\n\n\n\n<p>1. Open the Function Profile screen and select the profile (for example, SABY).<br>2. Choose Authorizations \u2192 Addition \u2192 Recall to load all current authorizations.<br>3. Under the Type dropdown, choose either &#8216;Site&#8217; (to restrict to specific sites) or &#8216;Site grouping&#8217; (to restrict by site groups like company-level access).<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-5.-Site-grouping-type.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-5.-Site-grouping-type.png\" alt=\"Fig 5. Site grouping type\n\"><\/a><\/center>\n<font size=\"2\"><center>Fig 5. Site grouping type\n<\/center><\/font>\n\n\n\n<p>4. Input the relevant site or site grouping code (e.g., NA10 for all sites under that group).<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-6.-Grouping-by-site.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-6.-Grouping-by-site.png\" alt=\"Fig 6. Grouping by site\"><\/a><\/center>\n<font size=\"2\"><center>Fig 6. Grouping by site<\/center><\/font>\n\n\n\n<p>5. Check \u2018Forced Cancel and Replace\u2019 to clear pre-existing settings when creating a fresh rule, and save your updates.<\/p>\n\n\n\n<p>If additional sites (such as NA20 or FR011) need to be added later, repeat the process but leave the &#8216;Forced Cancel and Replace&#8217; unchecked. This way, the user retains their previous site permissions while gaining access to new ones.<\/p>\n\n\n\n<p><strong>Example:<\/strong> Granting Access to Multiple Sites and Companies<\/p>\n\n\n\n<p>Consider a user who needs access to all sites within companies NA10 and NA20, plus one standalone site FR011. You would create authorizations for the profile to include NA10 as a Site Grouping, then NA20 without replacing existing rights, and finally FR011 as an individual Site. This ensures the user can manage operations only within these designated areas.<\/p>\n\n\n\n<center><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-7.-Example-of-functional-authorization.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" class=\"size-full\" style=\"border: 1px solid #A9A9A9; padding: 2px; margin: 2px; \nalign: center;\" src=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-content\/uploads\/2025\/10\/Fig-7.-Example-of-functional-authorization.png\" alt=\"Fig 7. Example of functional authorization\"><\/a><\/center>\n<font size=\"2\"><center>Fig 7. Example of functional authorization<\/center><\/font>\n\n\n\n<p><strong>Best Practices and Precautions<\/strong><\/p>\n\n\n\n<p>\u2022 Always test permissions using a copy of a function profile instead of modifying production ones directly.<br>\u2022 Verify that restrictions are applied correctly by performing sample transactions.<br>\u2022 Maintain backups of user settings before deploying changes.<br>\u2022 Avoid overlapping configurations between Row-Level Permissions and Functional Authorizations to prevent ambiguity.<br>\u2022 Regularly audit user access rights, especially after major version updates or role changes.<\/p>\n\n\n\n<p>By properly configuring Row-Level Permissions and Functional Authorizations, Sage X3 administrators can create a secure and well-regulated environment, ensuring users work only within authorized operational scopes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When multiple sites operate under a single Sage X3 environment, giving every user access to all sites can lead to unnecessary complexity and security risks. With row-level permissions, administrators can precisely restrict users\u2019 access to one or a few sites based on their roles. This blog demonstrates how to implement these restrictions efficiently and maintain\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.greytrix.com\/blogs\/sagex3\/2025\/10\/30\/restricting-user-access-to-specific-sites-in-sage-x3\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,13],"tags":[3857,1465,1632,1822,2018,2236],"class_list":["post-31401","post","type-post","status-publish","format-standard","hentry","category-sage-erp-x3","category-integration","tag-folders","tag-period","tag-recurring-task","tag-sage-x3","tag-schedule","tag-task"],"_links":{"self":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/31401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/comments?post=31401"}],"version-history":[{"count":10,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/31401\/revisions"}],"predecessor-version":[{"id":31530,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/posts\/31401\/revisions\/31530"}],"wp:attachment":[{"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/media?parent=31401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/categories?post=31401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.greytrix.com\/blogs\/sagex3\/wp-json\/wp\/v2\/tags?post=31401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}