Salesforce Service Cloud Integration

Connect Salesforce Service Cloud to Atlas AVD: open cases automatically when Atlas alerts fire, and more.

Before you begin

  • A Atlas AVD plan. The Integrations hub is not available on Community
  • The Administrator role in Atlas to connect, configure or disconnect a connector. Integrations appears under Administration only for administrators
  • A tenant selected in the tenant picker. Credentials are stored encrypted per tenant, so each tenant you manage connects its own account
  • A Salesforce org with Service Cloud cases, and a Salesforce administrator who can create an external client app
  • A Salesforce user for Atlas to run as, who can read accounts and assets and create and edit cases. An integration user with its own permission set works well

What you can do

  • Open Salesforce cases automatically from Atlas alerts, Atlas Reach devices going offline, Atlas Reach checks failing, and failed deployments, with a rule per kind of problem.
  • Avoid case storms: one open case per affected resource, a wait between cases per rule, and quiet hours during maintenance windows. A repeat adds a comment to the open case.
  • Comment on the case when the problem clears, and optionally move the case to a status you choose.
  • Choose the priority, case origin, case type and status new cases get, or leave them to Salesforce.
  • Create a case by hand from the Salesforce page.
  • Map each Atlas tenant to a Salesforce account, with suggested matches by name.
  • See every case Atlas opened and its Salesforce status, refreshed every 15 minutes.
  • Sync Salesforce assets into Atlas Vault.
  • Ask Atlas Advisor whether Salesforce is working, with or without an AI provider.

Step 1: Create an external client app in Salesforce

An org that still uses a connected app with the client credentials flow turned on works the same way: use its consumer key and secret. Changes to a new app can take a few minutes to reach every Salesforce server, so if the first connection attempt fails, wait and try again.

  1. In Salesforce, open Setup → External Client App Manager and click New External Client App. Give it a name such as Atlas AVD and a contact email.
  2. Under API (Enable OAuth Settings), turn on Enable OAuth, enter any HTTPS callback URL (Atlas does not use it), and add the OAuth scope Manage user data via APIs (api).
  3. Turn on Enable Client Credentials Flow and save.
  4. Open the app's Policies, and under OAuth Policies turn on Enable Client Credentials Flow and choose the Run As user Atlas acts as. Cases Atlas opens are created by this user, and Atlas sees only what this user can see.
  5. Open the app's Settings, click Consumer Key and Secret, and copy both. Also note your org's My Domain, shown under Setup → My Domain (for example yourcompany.my.salesforce.com).

Step 2: Connect in Atlas

A sandbox connects the same way with its own My Domain, such as yourcompany--uat.sandbox.my.salesforce.com. Once connected, the card shows Manage, which opens the Salesforce page, and Disconnect. The consumer secret is stored encrypted.

  1. Select the tenant in the tenant picker.
  2. Go to Administration → Integrations and click Connect on the Salesforce card.
  3. Enter the My Domain, the Consumer key and the Consumer secret, and click Connect. You can type the My Domain name, the full yourcompany.my.salesforce.com address, or paste the address of any Lightning page in your org. Atlas signs in to Salesforce and counts your accounts before saving anything; if Salesforce rejects the credentials, nothing is stored.

Step 3: Choose how new cases are filed

On the Salesforce page, open Settings. You can choose the Priority, Case origin, Case type and Status of new cases from your org's own picklist values. Anything left on Salesforce's default is filled in by Salesforce, and your case assignment rules, escalation rules and flows run on Atlas's cases as on any other. Many teams add an Atlas AVD value to the Case Origin picklist so these cases are easy to report on. Click Save.

Step 4: Map tenants to accounts

Open Accounts. Each active Atlas tenant has a row: pick its Salesforce account and click Save.

  • Suggest matches proposes an account for each tenant that has no mapping yet, matching names while ignoring case, punctuation and suffixes such as Inc or Ltd. A name that matches two accounts suggests nothing. Suggestions are only filled in: review them and click Save.
  • If a tenant has no mapping and there is exactly one mapping in total, its cases use that mapping.

Step 5: Create automation rules

Open Automation and click Add automation rule. Give the rule a name and choose what opens a case: An Atlas alert fires (a named condition such as Session Host Unhealthy, or any alert type), An Atlas Reach device goes offline, An Atlas Reach check fails, or Provisioning or a deployment fails. Set the lowest severity, how long a device must stay offline or a check must keep failing, and the wait between cases, then save.

  • One case per resource: while a resource has an open Salesforce case from automation, a new alert for it adds a comment to that case instead (once per alert).
  • Wait between cases: after a rule opens a case for a resource, it opens no new case for that resource for the number of minutes you set; a device that is still offline when the wait ends gets its case then.
  • Cases have the subject [Atlas AVD] followed by the rule name and the resource, and the description carries the alert, resource, severity, time and message. Comments Atlas adds are internal: they are not published to customers.
  • Salesforce rules run whatever the Atlas Flow and ConnectWise setting says, and are managed only on the Salesforce page.

When the problem clears

With Resolve the ticket when the problem clears switched on (the default), Atlas adds a recovery comment to the open case when the resource recovers. To also close it in Salesforce, open Settings and choose the status in When the resource recovers, move the case to; the list shows your org's case statuses. With Keep the status (add a comment only), closing the case stays with your team. Either way the next outage of that resource opens a new case.

Cases and status sync

  • Cases lists every case Atlas opened, newest first: the Salesforce case number, subject, resource, whether automation or a person created it, and its status.
  • Every 15 minutes Atlas reads the open cases back from Salesforce and records their status. A case your team closes in Salesforce (any status your org counts as closed) shows as Closed, so the same problem can open a fresh case next time. Sync case statuses now on Settings runs it straight away.
  • Create case opens a short form (subject up to 255 characters, description up to 32,000). The case is filed under the selected tenant's mapped account. A double-click or retry does not create a second case.

Sync assets into Atlas Vault

With Salesforce connected, open Atlas Vault → Assets → RMM & PSA sync and click Add sync: pick Salesforce as the source, an asset type, and the asset template each asset becomes, then map fields. If your org defines record types for assets, each one is offered as a type; otherwise there is a single All assets type. Atlas then creates and updates a Vault asset for each Salesforce asset that is not obsolete every hour, or when you click Run now. Fields you can map are the asset's name, serial number, status, product, record type, install date, usage end date and account. Values someone edits by hand in Vault are never overwritten.

What the integration does not do

  • It works with cases, accounts and assets only. It does not sync contacts, opportunities, entitlements, work orders, knowledge articles or Field Service records, and it does not create or change accounts.
  • It does not assign a case to an owner or queue itself; your Salesforce assignment rules do.
  • It opens cases against the tenant's mapped account only; it cannot pick a different account or contact per case.
  • Comments, emails and feed posts added in Salesforce are not shown in Atlas.
  • Asset sync only reads Salesforce; it never creates or changes assets there.
  • It connects one Salesforce org per Atlas tenant, through the client credentials flow only. Credentials cannot be edited in place: disconnect and connect again with the new ones.
  • Atlas calls the Salesforce API on a schedule and when you act, which counts toward your org's daily API request allowance. Salesforce Government Cloud orgs are not supported yet.

GCC High tenants

On a tenant or deployment in Azure Government (GCC High), calls to Salesforce are blocked by default, because they can carry VM, host-pool and tenant names to a service outside the Government boundary. Connect fails with an Azure Government (GCC High) egress boundary message and nothing is stored, and pages that read from Salesforce stay empty. The operator who runs your Atlas deployment can approve Salesforce as a destination that is allowed to receive that data; once approved, the connector works normally. Running in Azure Government does not by itself make a third-party integration GCC High or CMMC compliant.

Switching off and disconnecting

  • Switch off: on Settings, turn off Open cases in Salesforce and click Save. Your credentials, mappings and rules stay, but no cases are opened and statuses are not synced until you turn it back on.
  • Disconnect: click Disconnect on the card and confirm. Atlas deletes the stored credentials, stops opening cases and syncing statuses, and pauses any Atlas Vault asset sync from Salesforce. Mappings and rules are kept for when you reconnect. Cases already opened stay in Salesforce. Delete the external client app in Salesforce too if you no longer need it.

Troubleshooting

  • Salesforce sign-in failed (invalid_client or invalid_grant): the consumer key or secret is wrong, the client credentials flow is not turned on in the app's policies, or no Run As user is chosen. Check the app in Setup → External Client App Manager and connect again. A newly created app can take a few minutes to start working.
  • Enter your Salesforce My Domain: type your My Domain (yourcompany.my.salesforce.com, shown under Setup → My Domain), or paste the address of a page in your org.
  • No cases are created: check the integration is switched on, the rule is enabled and matches the alert, a maintenance window is not active, the wait between cases has passed, and the tenant is mapped to an account.
  • Map this tenant to a Salesforce account before creating cases: add the tenant's mapping on Accounts.
  • Salesforce refuses a case (for example a required field is missing or a validation rule fails): the message from Salesforce is shown. Choose the missing value on Settings, or adjust the rule in Salesforce so it allows cases from the Run As user.
  • A chosen priority, origin, type or status that is no longer active in Salesforce is refused: pick another on Settings.
  • API request limit reached for this org: your org has used its daily Salesforce API allowance. Atlas tries again on its next run; the allowance renews over a rolling 24 hours.
  • Couldn't load this from Salesforce: Salesforce could not be reached or refused the request, or the Run As user cannot see accounts or assets. Try again shortly, and check the user's permissions.

Next steps