Microsoft Entra ID logoSalesforce logo

Accounts in applications

Entra ID to Salesforce integration: Salesforce users from Microsoft Entra ID, with profile and permissions

With an integration between Microsoft Entra ID and Salesforce, every colleague in the right Entra group automatically gets a Salesforce user with profile, permission sets, role and manager, and that user is deactivated as soon as the Entra ID account is disabled. KoppelHet derives profile and permission sets from the groups, freezes a user when deactivation gets stuck in Salesforce and sets language and time zone right per country.

What the integration does

Anyone who manages all accounts in Entra ID and signs in to Salesforce with single sign-on often still sets profile, permission sets and per-country settings for each user by hand.

  1. IT adds a colleague to the Entra group that matches their team in Salesforce, for example inside sales Germany.
  2. KoppelHet picks up the change and derives the profile, permission sets and role from the groups.
  3. The Salesforce user is created with the language, locale and time zone of the colleague's country, and with the manager from Entra ID.
  4. The colleague signs in through single sign-on; Salesforce recognises them through the link with their Entra account.
  5. When IT disables the account or the group membership ends, the user is deactivated, or frozen first if Salesforce still refuses deactivation.
Microsoft Entra ID → KoppelHet → SalesforceSOURCEMicrosoft Entra IDTARGETSalesforceKoppelHetmapping · logging · monitoringMicrosoft Entra ID → KoppelHet → SalesforceSOURCEMicrosoft Entra IDTARGETSalesforceKoppelHetmapping · logging · monitoring
Out: Salesforce user with name, email and username · Profile and permission sets based on groups · Role in the role hierarchy · Language, locale and time zone · Manager

What to watch for with Microsoft Entra ID and Salesforce

  • The Entra ID sign-in name is the obvious choice for the Salesforce username. That username must be unique across all Salesforce environments in the world, including other companies' ones. If the address already exists in another environment, such as an old trial org, creation fails; KoppelHet then uses an agreed variant and runs single sign-on through a separate field.
  • A Salesforce user has one profile, while a colleague in Entra ID can be in several groups. KoppelHet derives the profile from groups with a fixed priority and adds the rest as permission sets, so a colleague in two teams still has one profile.
  • Salesforce requires a language, locale and time zone per user. KoppelHet fills them from the user's country in Entra ID, in the format Salesforce expects, so a colleague in London sees dates and amounts the British way.
  • KoppelHet signs in to Salesforce with a connected app and a separate integration user, independent of a personal admin account. A new administrator password therefore does not stop the integration.
  • A changed email address must first be approved in Salesforce before it takes effect. KoppelHet keeps the username the same and reports the address change once, so the administrator knows what is pending.
  • The manager in Entra ID does not always have a Salesforce licence. Salesforce can only point to an existing user as manager. KoppelHet walks up the Entra ID manager chain to someone who is in Salesforce.
  • A disabled Entra account does not mean Salesforce can deactivate the user straight away: if they are still a default owner or in an approval step, Salesforce refuses. KoppelHet then freezes the user immediately, so access is closed anyway.

How we build and run it

  • The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
  • Every sync and every error is visible in the functional log; on an error your administrator is notified.
  • A change that cannot go through is not half-applied but queued for another attempt.
  • KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
  • After go-live we manage the integration and adjust it when your process changes.
  • The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.

Implementation, architecture and compliance

Implementation and price

This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.

A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

Does single sign-on through Microsoft keep working?

Yes. Single sign-on and provisioning are separate. KoppelHet fills the field Salesforce uses for single sign-on, so sign-in through Entra ID stays as it is.

Why Entra ID as the source and not the HR system?

If IT already keeps accounts and groups accurate in Entra ID, that is the shortest route. If job and department are only right in the HR system, that can be the source; see for example AFAS or Workday to Salesforce.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • Entra ID is read through Microsoft Graph with a delta query on users and group membership, using an app registration with read-only permissions (User.Read.All, GroupMember.Read.All).
  • Salesforce is written through the REST API on the User object with a connected app (OAuth 2.0) and an integration user with Manage Users. FederationIdentifier (at most 512 characters) holds the value Entra ID sends in the SAML assertion. Extra permissions through PermissionSetAssignment; on departure IsActive = false, or UserLogin.IsFrozen = true when deactivation is refused.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in Microsoft Entra IDField in SalesforceNotes
userPrincipalNameUsername en FederationIdentifier
givenNameFirstName
surnameLastName
mailEmail
mailNickname (ingekort)AliasAt most 8 characters
employeeIdEmployeeNumber
jobTitle en departmentTitle en Department
GroepslidmaatschapProfileId, permission sets en UserRoleIdOne profile through a fixed priority order, permission sets per group
usageLocation en preferredLanguageLocaleSidKey, LanguageLocaleKey en TimeZoneSidKey
managerManagerId
accountEnabledIsActive

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.