Configure User Identity [New Journey]

Guided journey for indexing your users and their attributes, used to power downstream skills such as ticketing, forms, and knowledge search.
View as Markdown

Old identity journey and migration steps

If your organization currently uses the old user identity journey, refer to Configure User Identity - Old Journey doc for more details.

If you want to migrate to the new revamped identity journey, follow the steps below.

Migration checklist

  1. Verify joining keys — ensure your joining keys are mapped to the Moveworks Universal ID construct, which is standardized in the new journey.
  2. New orgs are ready — all new organizations have the new journey enabled by default. If you encounter any issues, please contact your Moveworks Admin.

Directly switching without migration will break joining keys and will likely cause user ingestion to fail. Contact your Moveworks Admin for migration steps.

What’s available in the new identity journey

  • Connector validation — test primary and secondary connectors before configuration.
  • Pre-built source mappers — default mappers per system for seamless setup.
  • JSON field editor — configure internal fields, such as user ID info, directly.
  • DSL attribute mapping — validate and auto-complete mappings for supported systems.
  • DSL testing for attributes — validate the values your attributes return from specific systems.
  • Joining key testing — validate joining keys with DSL before saving.
  • User preview — test with a sample user to verify the entire profile and confirm success before ingesting users.

Overview

Why identity configuration is critical for enabling Moveworks capabilities

The Moveworks AI Assistant always acts on a user’s behalf. To do that, it needs to know who they are in every system. Identity configuration is where the Assistant derives that knowledge from, and every downstream capability — ticketing, forms, knowledge — depends on it.

For example, take a simple user request: “My laptop won’t turn on after the macOS update, please raise an IT ticket.”

  1. The Assistant works out the intent: file a ticket.
  2. It looks up the person’s ITSM identity (ID) — their user record ID in ServiceNow or Jira. That is the account the ticket is raised under.
  3. It reads their department and location, so the ticket reaches the right team at the right site.
  4. It creates the ticket.

Without step 2 there is no requester to attach, and the ticket cannot be created at all. Without step 3, the routing destination is never set for the ticket.

Other patterns follow the same shape:

  • “I need access to Salesforce.” The Assistant needs the user’s ID in your IDM, such as Okta, to initiate the request, and their manager’s ID to approve it.
  • “What discount can I approve on this sales deal with Adobe?” The Assistant checks whether the user is part of the sales org using their ID, and only then surfaces the corresponding knowledge article on product discounts.
  • “Who reports to me?” The manager relationship has to be resolved.

A complete user profile is what makes all of this possible. It tells the Assistant where the person exists in each system, what they are allowed to see, and how to reach them. Identity configuration is how Moveworks builds one such profile per person, filling the Moveworks user data dictionary for every ingested user.

High-level architecture of Moveworks user identity

High-level architecture of Moveworks user identity.

How to start setting up identity configuration for your org

Before you begin

  1. Know your sources. Decide which system is your primary source of truth for users and their attributes, and which secondary sources you need for additional users or attributes.
  2. Create and authorize your connectors. Every source needs a working connector before you start.
  3. Decide your joining key. It can only be set once per configuration save. Changing it later requires resetting your configuration and re-ingesting all users.

The joining key is extremely important when you have multiple sources configured. It is the common identifier used to match and merge user profiles across different sources, via a left join on the primary source.

For example, John Doe exists in both MS Graph (primary source, joining key: SAM account name) and ServiceNow (secondary source, joining key: external_id). John’s SAM account name is jdoe.

  • The left join matches on jdoe from MS Graph.
  • If ServiceNow’s external_id is not jdoe, all attributes for John from ServiceNow are dropped.
  • If John’s SAM account name is empty or null in MS Graph, the user is excluded from ingestion entirely.

Steps to configure user identity

Step 1: Select sources

  1. Set a primary source connector.
  2. Set the secondary source connectors.
  3. Test and validate each source. Ensure issues are fixed at this step so they do not affect downstream user ingestion.

You will encounter one of the following scenarios for each source.

Test is successful — the connector is valid and you can proceed.

Successful connector test on the Select sources step.

Test fails on a built-in connector — there is an underlying issue with the connector, such as a 403 access forbidden error. Test the connector with a users API call in the API Playground. If no APIs are found for a system, define the path in the API manually and test to see what it returns.

Failed connector test for a built-in connector.

Test fails on an Identity Gateway (HTTP) connector — testing is not supported for Identity Gateway sources, but your user ingestion remains unaffected. Go to Agent Studio > HTTP Actions and test a sample HTTP action. Fix the connector until you get a 200 Success code in the action response. See Custom User Ingestion with Identity Gateway for the full setup guide.

Testing an HTTP action in Agent Studio for an Identity Gateway connector.

Known limitation: connector testing in identity is not supported for HTTP connectors.

Connector testing is only supported for built-in connectors. If you bring users in through Identity Gateway using an HTTP connector, the connector is still fully supported for user ingestion, but you will not be able to test it on this screen. Reach out to your Moveworks Admin for more information.

Connector testing for on-prem systems

For on-prem agent setups, ensure the on-prem connector — ServiceNow, for example — is configured with the service_name field populated. This is not applicable to Active Directory.

When you click Test for an on-prem connector in the new identity journey, the system sends a validation call to the agent to confirm connectivity. You can also validate on-prem connectors via the API Playground.

Testing an on-prem connector in the identity journey.

Step 2: Configure source mapping

How to view and add attributes per source

This is where you map user attributes from each connector to the Moveworks user object. For each connected system, decide which of its attributes fill which Moveworks user fields.

Moveworks ships default mappings for every supported system, so most orgs start with a working configuration.

Use View attributes to see what is already mapped before you add anything.

View attributes control on the Configure source mapping step. Expanded list of mapped attributes for a source.

To map additional attributes:

  1. Expand a source and click + ADD.
  2. Pick the Moveworks user field you want your attribute mapped to.
  3. Build the rule in the DSL builder. Use autocomplete to select the external attribute you want — it suggests the attributes that system actually returns.
  4. Test the rule live for a user and check the output.
  5. If it is your desired output, click SAVE.
Building an attribute mapping rule in the DSL builder.

How to test an attribute against a sample user

Click Edit against any attribute, then enter a user email to test the mapping against an existing user.

Edit control for testing an attribute mapping. Result of testing an attribute mapping against a sample user.

Known limitation: some built-in connectors do not support DSL testing.

There is a set of built-in systems for which DSL testing is not supported — Workday, for example. Your user ingestion will still be fully functional, but testing for these systems is affected on the Configure source mapping and Test with user screens. Contact your Moveworks Admin for more details.

Which internal fields you can map

Beyond the standard profile, you can also map a set of internal fields based on your requirements.

FieldWhat it holds
user_id_info.channel_id_infoHow to reach the user on a chat platform
user_id_info.user_itsm_id_infoThe user’s identity in your ITSM system
user_id_info.user_idm_id_infoThe user’s login in a downstream system, used for auth and permission trimming
password_meta_info.password_last_changedLast password change timestamp
password_meta_info.password_expiresPassword expiry timestamp
employment_info.employee_start_date_tsStart date timestamp
internal_fields.manager_resolverHow the employee-manager relationship is resolved

The JSON editor, and when you need it

Most fields take a DSL expression in the mapping. The user_id_info fields — channel_id_info, idm_id_info, and itsm_id_info — are the exception: they hold an array of entries rather than a single value, so they can only be defined through the JSON editor.

Moveworks ships defaults for each system. You can edit those defaults, and map new attributes per source based on what your configuration needs.

Example: routing ServiceNow users to the Moveworks Web Assistant

Say ServiceNow is a secondary source for ingesting users. Its channel_id_info is empty by default — reasonably, since ServiceNow is not a chat platform. If you want every user ingested from ServiceNow to be reachable through the Moveworks Web Assistant, you need to define this mapping explicitly. Add a channel_id_info entry for ServiceNow and define its JSON mapping for Moveworks Web Chat.

This is the general shape of the problem for cross-mapping use cases. When the surface you want to reach a user on is not the system you got them from, user_id_info is where you close the gap.

JSON editor for user_id_info fields. Defining a channel_id_info entry in the JSON editor.

Internal user email field mapping

If you are defining a new mapping for the user_id_info.user_email field across any source, always enclose the DSL expression in []. The field expects values in this list format only.

user_email mapping using list format.

How to add filters and processors

Open a source and click the filter icon. You get two tabs: Filters and Processors.

Filters and Processors tabs for a source.

Filters decide which users get ingested

Filters narrow which users Moveworks pulls from a source, and declare which attributes the source returns for them. Without a filter you ingest every account the connector can see — people who have left the company, service accounts, external guests — and each one counts toward your user count.

Filters are source-specific. Pick the one built for your system, or use the Generic Source Filter if there is no dedicated one. Always set your filters upfront to ensure you ingest the right set of users to start with.

Example: MS Graph Source Filter

  • Azure AD Group ID — only ingest members of that group. Useful when you want to start with one department.
  • OData Filter Query — the default is accountEnabled eq true, which skips accounts that have been switched off. Extend it to accountEnabled eq true and userType eq 'Member' to also exclude external guest accounts, so only your active employees are ingested.
  • Attributes — Graph only returns the properties you ask for. Anything missing from this list arrives empty, however correct your mapping is.
MS Graph source filter with OData filter query and attribute list.

MS Graph ships with a default filter and attribute list.

The Graph API only returns the properties you explicitly ask for. We populate this filter and attribute list so the out-of-the-box mappings are guaranteed to receive their inputs. Add more filters and attributes whenever your configuration needs them.

This attribute list controls what Microsoft Graph sends back — not what your mappings ask for. The two are edited in different places, so always ensure they are in sync:

  • If you add a mapping that reads a Graph property not on this list, add that property to the list too. Otherwise the Graph API never returns the desired attributes.
  • If you remove a property from this list, every mapping that reads it silently starts producing empty values. The mapping expression is still valid, but the field value arrives empty for your users.

Available filters

FilterUse it forWhat you control
Generic Source FilterAny system without a dedicated filter, such as ServiceNowAPI query string, attribute list
MS Graph Source FilterMicrosoft Entra ID / MS GraphAzure AD group ID, OData filter query, attribute list
Sharepoint OneDrive NG Source FilterSharePoint and OneDriveAzure AD group ID, OData filter query, attribute list
Exchange Source FilterExchange OnlineMailbox user, PowerShell filter command, attribute list
Salesforce Source FilterSalesforceTable name, SOQL condition string, attribute list
Gdrive / GSuite Source FilterGoogle WorkspaceWorkspace customer ID, custom schemas
Confluence Source FilterConfluence CloudGroup ID that returns your full user set
Confluence Server Source FilterConfluence ServerGroup name
Sharepoint Online Source FilterSharePoint OnlineSites
Cherwell Source FilterCherwellUser business object ID, user fields
MS Teams Source FilterMicrosoft TeamsTeam ID
Freshdesk Source FilterFreshdeskWhether to ingest agents
Github Source FilterGitHubOrganization name
S3 FilterUsers listed in a fileS3 file URL

Processors fill in what cannot be derived from the source directly

Some fields cannot be mapped, because the source does not hold the exact user attribute value. Processors compute these values during ingestion.

Two common scenarios:

Resolving a manager. ServiceNow does not store your manager’s email address — it stores the manager’s sys ID. If you map that straight into manager_email, you end up with an ID instead of an email. So you map two things: each user’s own sys ID into internal_fields.manager_resolver, and their manager’s sys ID into manager_email. The Unified Resolve Manager Processor then looks up that sys ID against everyone being ingested, finds the person it belongs to, and replaces the ID with their email address. Approvals now reach a real inbox.

Deriving geocodes. No system gives you coordinates. You map country_code in source mapping, which holds a two-letter country code — DE for Germany, US for the United States. The User Geocode Processor reads that code during ingestion and works out the matching coordinates. This is what lets the Assistant apply German policy and route to the German support queue for a user in Germany, instead of treating the country as plain text it cannot act on.

List of processors available for a source.
ProcessorWhy you need itMoveworks field it fills
Unified Resolve Manager ProcessorYour source stores the manager as an ID, not an email. This swaps that ID for the manager’s actual email address.manager_email — reads the internal_fields.manager_resolver field
User Geocode ProcessorNo system gives you exact geographical coordinates. Converts a country code into geocodes so location-based answers work.geocodes — reads the country_code field by default
User Timezone ProcessorSources store timezones in different formats, or not at all. Works out a standard timezone from the user’s city and country, or state.timezone
User Password Meta Info ProcessorSources usually return only one of the two password dates. Fills in the missing one using your org’s password policy.password_meta_info.password_last_changed, password_meta_info.password_expires
User Filter ProcessorLeave out users whose attribute matches a list of values. Simple exclusion, no DSL needed.None — removes users
Filter Rule Post ProcessorLeave out users that fail a DSL rule. Use this when the exclusion needs logic a value list cannot handle.None — removes users
Dsl First Match Dedupe ProcessorThe source returns the same person more than once. Your rule decides which record to keep.None — removes duplicates
Generic ProcessorUsed for custom transformations, configured by Moveworks.Varies

How to view sample users

Click Sample Users to preview a set of users that will be ingested from this source.

Sample Users control for a source. Sample users preview for a source.

No filters or processors are applied while viewing sample users.

The sample users screen shows a raw set of users and attributes that will be ingested from the target system. Filters and processors are not applied in this view.

Step 3: Configure override mapping

By default, every standard attribute on the final user profile comes only from your primary source. Override mapping is where you change that, one field at a time — either to take a field from a secondary system, or to fall back from one system to another when a value is empty.

Mapping an attribute on a secondary source in Step 2 is not enough. Until you add an override for that field here, the profile always keeps the primary source’s value. This is the most common reason a secondary attribute shows up empty.

For example, Workday is your primary source, but its office locations are out of date and ServiceNow has the current ones. Add an override for location pointing at ServiceNow — location now comes from ServiceNow, and every other field still comes from Workday.

Override field mapping step.

You can override standard profile fields, internal fields, and custom attributes.

Not available in override mapping: user_tags and the user_id_info fields. These are source-mapping only and are auto-merged when the final user profile is created — set them in Step 2 only.

Geocodes: a special case

geocodes appears only in the override mapper, never in source mapping. This field is always derived from the country_code field present in the source mapper.

Geocodes turn “this user is in Germany” into coordinates the AI Assistant can reason about — so it can apply the right regional policy, route to the right regional support queue, surface the right office or holiday calendar, and answer location-dependent questions correctly. Without them, a user’s location is a plain string the Assistant cannot act on.

Geocodes field in the override mapper.

Step 4: Configure join key

Your joining key is the attribute that identifies the same person across all your systems. It is what turns several incomplete records into one complete profile.

For example, Workday is your primary source, with ServiceNow and Okta as secondary sources. Workday knows Jane’s department and manager, ServiceNow has her current office, and Okta has her login.

When the keys line up, the records merge. If all three sources return employee ID 40417 for Jane, Moveworks builds one profile with her manager, her office, and her login — enough for the Assistant to route her approval and answer questions about her office.

When a secondary source’s key does not match, data from that source drops out. If ServiceNow returns a different value, Jane still gets a profile from Workday, but her office is empty and anything that depends on her location stops working for her. Nothing looks broken. If the primary source’s key does not resolve, Jane gets no profile at all.

Pick an attribute whose value is the same in every system and does not change over time, or write a DSL rule to build the key from more than one attribute.

Set Joining Keys step.

How to edit and test a joining key from a new source

Within the source, click Edit. Map the corresponding attribute and test with a user email. This validates that your source is not returning an incorrect or empty joining key.

Editing a joining key for a source. Testing a joining key against a sample user email.

Your joining key can only be set once. Choose it carefully.

Once a source is configured, its joining key is locked. Only newly connected secondary sources can still have their joining keys set and tested.

To change the joining key of an existing source after your configuration is saved, you have to reset your entire identity configuration, which requires offboarding your user roster and removing all ingested user data, roles, and permissions. Contact your Moveworks Admin for more details.

This is a rare scenario. Complete a thorough access-requirements review before you set the key and save your identity configuration.

Step 5: Validate final user profile and submit

This is where you dry run your identity configuration for sample users, before you save your changes.

Enter a user’s email address and click Show User Profile. This section tells you whether, for the given user email, the system was able to build a final user profile across multiple systems.

Configuration mistakes are invisible until users are already ingested, and by then fixing them means re-ingesting. This is the only place you see the finished profile pre-ingestion.

Test with user step. Final user profile built from all configured sources.

System attributes

System attributes appear per integration_id, based on the configuration set for all user_id_info fields across primary and secondary sources on the Configure source mapping screen. Click each toggle to view attribute-specific values.

System attributes shown per integration_id.

How the test actually works

  1. Moveworks makes a fetch user by email API call against every connected source — Okta, MS Graph, and so on — in parallel, using the email address you typed.
  2. Each returned record is run through that source’s source mapping from Step 2, producing one mapped record per source.
  3. Those mapped records are joined on the joining key from Step 4, such as SAM account name, and merged into a single profile anchored on the primary source, exactly as real ingestion would.
  4. The merged result is what you see on screen.

The important consequence: the email only helps you locate the user. The joining key is what does the actual merging. When those two are different attributes, the test can fail even though real ingestion works fine — a single-user lookup returns fewer attributes than the full crawl does, so a source can come back with no joining key value at all.

Each source reports a merge status.

StatusWhat it meansWhat to doExample
Joining key matchedThe source found the user and merged them into the profile.Nothing.Jane exists in Workday and Okta, and both joining keys — employee ID, for example — read 40417.
Failed to process user recordThe source was queried successfully, but it has no record for that email address.Usually nothing — it is normal for a person not to exist in every source. Only investigate if you are certain they are there, in which case check that source’s filter.Jane is in Workday and Okta but was never created in ServiceNow, so the ServiceNow source shows an error.
Failed to merge from sourceThe record was found, but its joining key is empty or does not match the primary source’s value.Go to Set Joining Keys, and check validity by DSL testing on the Configure source mapping screen. Confirm both sources produce an identical value for this person, and that the joining key attribute is included in that source’s attribute list — if it is not fetched, the key resolves to empty.The joining key is SAM account name, but a contractor’s Active Directory record has no value, so the key is empty.
Failed to fetch profile from sourceThe source could not be queried at all.If it is an Identity Gateway (HTTP connector) source, or a built-in connector that does not support fetching a user by email, this is a known limitation — the row will always be red and there is nothing to fix. Otherwise, check and fix your connector.Workday configured as a secondary source, an Identity Gateway source, or a connector whose credentials have expired.
Data type mismatchA mapping returned the wrong type of value for the field it fills.Fix that field’s expression in Configure source mapping (Step 2) or Override field mapping (Step 3).A field that expects a list was mapped to a single text value, or a date field was mapped without $TIMECONV(...).
Primary source profile missingThis source is fine — the primary source failed, so there is no profile to merge into. Merging is a left join anchored on the primary.Ignore this row and fix the primary source’s error instead. Once the primary source is fixed, this clears on its own.The ServiceNow (primary) mapper maps an integer to department and fails with “Data type mismatch”, so MS Graph — which fetched fine — shows this error.

Where a field comes back empty, the screen tells you why under Sample Results.

ReasonMeaning
Attribute not configuredNo mapping exists for this attribute
Primary / Secondary source DSL evaluated to NULLThe mapping ran but produced no value for the attribute
Override DSL evaluated to NULLThe override rule produced nothing
Secondary attribute is present in source mapping but not on override, and secondary source DSL evaluated to NULLThe attribute is mapped on the secondary source but not on the primary, and has no override, so it produced no value

Below is a sample scenario where the user test fails across multiple configured sources.

Merge status errors across multiple configured sources.
Errors for a user whose email exists in the primary source but whose joining key is missing, whose email does not exist in any secondary source, and who cannot be tested via the Identity Gateway.

An error does not always mean something is wrong. The most common cause is simply that the person does not exist in that source. Before changing any configuration, re-run the test with a full-time employee who exists in every connected system.

If your joining key is not an email address, the Test with user screen may error out even though user ingestion succeeds. The test uses email to locate the user in the source, but the source may not return the attribute your joining key requires.

Manager resolver field and processor behaviour

internal_fields.manager_resolver does not appear in the final user profile. It exists only to configure how the manager relationship is expressed in your source system. Moveworks uses it to identify the manager, then populates the manager_email field with that person’s email address.

For manager_email on the test screen, the preview displays the raw mapped value, not the post-processed manager email. Because the preview performs only a single lookup per source and does not perform manager resolution, the displayed value may differ from your final ingested profile.

For example, in ServiceNow the manager field natively stores a manager sys ID. The test screen displays this sys ID under manager_email. After ingestion and post-processing, that field contains the actual manager email address. This difference is expected and does not indicate a mapping error.

Once you submit, ingestion begins in the next cycle. It usually takes 4 hours to get all users ingested for the first time. You can check status under the Imported Users tab.

FAQs

General

Within Moveworks Setup, navigate to Core Platform > Analytics and Data > Custom Attributes, add your attribute, and it becomes available in the source mapping dropdown as custom_attributes.name.

Adding a custom attribute in Moveworks Setup.

In source mapping, click ADD, select user tags from the dropdown, then write and test your DSL rule. User tags are source-mapping only — they cannot be set in override mapping.

Adding user tags in source mapping.

The primary source, always, unless you add an override for that specific field from a secondary source in Step 3.

Yes, but it is not recommended. There is only one way to do it: offboard your entire existing user roster, then define a new identity configuration from scratch with the new joining key. Reach out to your Moveworks Admin for assistance.

Usually because the source did not return that attribute for those users. For MS Graph specifically, check that the property is in the source filter’s attribute list — the Graph API only returns properties you explicitly request, so a mapping can look correct and still produce nulls.

Yes, it is fully supported as a source. Two caveats: you cannot test the connector in Step 1, and its attributes will not show in the Step 5 preview.

The ingestion pipeline runs on a 4-hour frequency. Check the Imported Users tab for user data.

Yes. Existing sources keep their locked joining keys, and the new source gets its own joining key set when you add it.

Standard fields and internal fields

Standard fields are the profile attributes you normally map — name, email, department, location, and so on. Internal fields usually hold identity plumbing that Moveworks uses to reach the user, rather than to describe them.

user_tags and the user_id_info fields. Set those in source mapping only.

The User ID Info fields

It stores who the user is in all your connected systems — their chat handle, their ITSM record, and their login in downstream systems. Moveworks uses it to reach the user and to trim permissions.

channel_id_info is the chat platform identity, user_itsm_id_info is the identity in your ITSM system, and user_idm_id_info is the login used for auth and permission trimming in downstream systems.

Each one holds an array of entries — one per system — rather than a single value, so it is defined as a JSON fragment.

Because they do not need it. Entries from every connected source are collected onto the profile automatically, so there is nothing to choose between.

No. Moveworks ships defaults per system. Add entries only when the surface you want to reach the user on is not the system you ingested them from — see the ServiceNow example in Step 2.

Joining keys

An attribute whose value is identical in every connected system and stable over time. Email address and employee ID are the usual choices.

Yes. You set it per source, so you can write a DSL rule to normalize the value or derive it from more than one attribute when systems store it differently.

Matching is case-insensitive, so Ann.Smith@company.com and ann.smith@company.com will join. Anything else — a different prefix, a different domain, a stray space — will not.

Either that user genuinely has no value for it, which is common for contractors and users without a mailbox, or the attribute is not in that source’s attribute list, so the source never returns it.

User ingestion works normally, but the Step 5 test looks users up by email, so it may not be able to validate your configuration.

Override mapping

When a secondary system is more accurate for a specific field, or when a field should be built from several systems with a fallback.

Source mapping only makes the attribute available. To get it onto the profile you also have to add an override for that field — otherwise the primary source’s value is kept. This is the most common reason a secondary attribute looks empty.

Yes, and override mapping is the only place you can. Source mapping can only read from the one source you are editing.

Yes. Standard fields, internal fields, and custom attributes can all be overridden, except the user_id_info and user_tags fields, which are merged by default.

The rule runs but produces nothing, so the field comes back empty. Write a fallback in the expression if you want the primary source’s value used instead.

Geocodes and derived fields

Derived. No system returns geocodes natively in the shape Moveworks expects — it is computed during ingestion from the country_code field you mapped in source mapping.

Because it is not read from a source, there is nothing to map in source mapping. For the same reason it does not appear in autocomplete — you add it to the override list directly.

Geocodes cannot be derived, so location-dependent behavior — regional policy, regional routing, the right office or holiday calendar — will not work for those users.

Derived fields are computed during ingestion, not during the dry run, so an empty value in the preview does not mean the configuration is wrong. Confirm country_code is populated for the user instead.

Testing and validation

Moveworks calls get-user-by-email on every connected source, runs each record through that source’s mapping, then merges them on the joining key anchored on the primary source — the same merge real ingestion performs.

Most often because the joining key is not email. The test looks the user up by email but merges on the joining key, so if a source’s get-user-by-email response does not return the attribute your joining key is built from, that source cannot match.

A full-time employee who exists in every connected system. Contractors and users without a mailbox often lack a joining key value, which makes the test fail for reasons unrelated to your configuration.

Not necessarily. A secondary source failure is contained to that source’s attributes. Read the primary source’s row first — if that one is red, everything below it is downstream noise.

Some built-in systems cannot fetch a single user by email, and DSL testing, joining key testing, and the final profile review all depend on that call. Ingestion still works. Contact your Moveworks Admin for the current list of affected systems.

Yes. For sources that do not support fetching a user by email, the row will always be red and there is nothing to fix — validate those separately and save.

Identity Gateway

Connector testing only covers built-in connectors, and Identity Gateway uses an HTTP connector. Validate those connectors separately with an HTTP action within Agent Studio before you rely on them.

No. The attributes land on the profile normally — they just are not shown on the preview screen.

Yes. They are treated as a normal source in the merge, so the same joining key rules and the same match or mismatch behavior apply.

Yes, but you lose both the connector pre-flight check and the profile preview for it — so validate the mapping carefully before you save.

Yes. The user_id_info fields work the same way as for any other source, including the JSON editor.

Because it cannot be queried by email. This is a known limitation rather than an error in your configuration — the row will always show this status.