{"id":285,"date":"2025-04-01T13:45:08","date_gmt":"2025-04-01T12:45:08","guid":{"rendered":"https:\/\/vtom.uk\/?page_id=285"},"modified":"2025-04-01T13:45:08","modified_gmt":"2025-04-01T12:45:08","slug":"okta-salesforce-provisioning","status":"publish","type":"page","link":"https:\/\/vtom.uk\/index.php\/okta-salesforce-provisioning\/","title":{"rendered":"Okta &#8211; Salesforce Provisioning"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">While the Okta and Salesforce documentation is comprehensive, while setting up and testing the integration, I found complications relating to missing attributes and problems with use of multiple groups for Salesforce Permissionsets and Profiles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Missing Attributes<\/strong><br>By default the following attributes are not mapped to the Okta Integration Network Salesforce app, which must be used if using Okta for Salesforce user provisioning:<br>  * Email Encoding (EmailEncodingKey)<br>  * SAML Federation ID (FederationIdentifier)<br>  * Locale (LocaleSidKey)<br>  * Time Zone (TimeZoneSidKey)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All of these are substantial for many Salesforce setups, so to add them, navigate from the Okta Admin Dashboard through Directory > Profile Editor. Search for the Salesforce App and select it, to bring up the Profile Editor. Select &#8220;Add Attribute&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"490\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-13-1024x490.png\" alt=\"\" class=\"wp-image-294\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-13-1024x490.png 1024w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-13-300x144.png 300w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-13-768x367.png 768w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-13.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Select the missing attributes then select Save.<br>Navigate through the Okta Admin Dashboard to Applications then Application and select the Salesforce app. Select Provisioning and scroll down and the attributes will be available to assign values to:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"431\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-14.png\" alt=\"\" class=\"wp-image-295\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-14.png 955w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-14-300x135.png 300w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-14-768x347.png 768w\" sizes=\"auto, (max-width: 955px) 100vw, 955px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Multiple Group Membership<\/strong><br>Using Okta for Salesforce provisioning, the default settings cause a problem when more than one Salesforce PermissionSets, Profiles and PublicGroups are being used. This is documented on Okta&#8217;s KB: <a href=\"https:\/\/support.okta.com\/help\/s\/article\/When-a-user-is-assigned-to-a-Salesforce-app-through-multiple-groups-they-only-inherit-the-Permission-Sets-from-one-of-the-groups-and-not-all?language=en_US\">User Assigned to the Salesforce App through Multiple Groups only Inherit the Permission Sets from One Group<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The default behaviour will cause only the first group (in the Okta provisioning order) to be transmitted to Salesforce, however this is insufficient for most Salesforce configurations which use more than one group to logically separate users into permission sets and profiles, and users may well be in more than one group.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate from the Okta Admin Dashboard to Directory > Profile Editor. Search for the Salesforce app and select it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-8-1024x518.png\" alt=\"\" class=\"wp-image-287\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-8-1024x518.png 1024w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-8-300x152.png 300w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-8-768x388.png 768w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-8.png 1226w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The profile editor will appear:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"287\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-11-1024x287.png\" alt=\"\" class=\"wp-image-292\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-11-1024x287.png 1024w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-11-300x84.png 300w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-11-768x215.png 768w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-11.png 1299w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Scroll down and select the pencil next to &#8220;PermissionSets&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"68\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-12-1024x68.png\" alt=\"\" class=\"wp-image-293\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-12-1024x68.png 1024w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-12-300x20.png 300w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-12-768x51.png 768w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-12.png 1261w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Change &#8220;Use Group Priority&#8221; to &#8220;Combine values across groups&#8221; and select [Save Attribute]<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"872\" height=\"986\" src=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-7.png\" alt=\"\" class=\"wp-image-286\" srcset=\"https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-7.png 872w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-7-265x300.png 265w, https:\/\/vtom.uk\/wp-content\/uploads\/2025\/04\/image-7-768x868.png 768w\" sizes=\"auto, (max-width: 872px) 100vw, 872px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Repeat for other attributes that are managed through group membership, where it is possible for a user to be a member of multiple groups (e.g. &#8220;Public Groups&#8221;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>While the Okta and Salesforce documentation is comprehensive, while setting up and testing the integration, I found complications relating to missing attributes and problems with use of multiple groups for Salesforce Permissionsets and Profiles. Missing AttributesBy default the following attributes are not mapped to the Okta Integration Network Salesforce app, which must be used if &hellip; <a href=\"https:\/\/vtom.uk\/index.php\/okta-salesforce-provisioning\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Okta &#8211; Salesforce Provisioning<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-285","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/pages\/285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/comments?post=285"}],"version-history":[{"count":1,"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/pages\/285\/revisions"}],"predecessor-version":[{"id":297,"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/pages\/285\/revisions\/297"}],"wp:attachment":[{"href":"https:\/\/vtom.uk\/index.php\/wp-json\/wp\/v2\/media?parent=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}