Attribute Mapping in Okta

Attribute Mapping in Okta

A plain-English guide to how Okta decides which fact goes into which box: how mappings work between Okta, apps, directories and identity providers, how to build them safely, and how to fix them when the wrong value shows up in the wrong place.

Imagine moving house. You pack a box labeled “kitchen”, but the new house calls that room “cooking area”. Someone must decide which box goes into which room. If that person is careless, the plates end up in the bathroom and the towels in the oven. Attribute mapping is that decision, made for the facts about people. Every app, directory and sign-in service has its own names for the same facts, and something must translate between them.

Okta does this translating all day long. When a person is created in an app, when a name is changed, when a person signs in and the app asks “what is your email and department?”, Okta uses a mapping. Mappings are small, quiet and easy to ignore, which is why mistakes in them cause such strange and lasting problems. This guide explains attribute mapping from zero. Each new word is explained when it first appears, and each big idea comes with an everyday comparison. By the end you will understand what a mapping is, where mappings live, how they are built, how to design them well, and how to find the cause when a value looks wrong.

1Why Mapping Exists

Different systems store the same fact under different names, in different shapes. Mapping is the translation layer that lets them understand each other.

The problem in one sentence

One person is described in many places, and each place describes them a little differently. Okta calls the person’s email “email”. A directory may call it “mail”. An app may call it “emailAddress” or “work_email”. A payroll system may call the department “dept” and store it as a number. If Okta simply copied everything unchanged, most apps would reject it or ignore it.

What a mapping does

A mapping is a rule that says: take this fact from this place, optionally change it in a certain way, and put it into that box in the other place. A set of such rules, one per fact, is called an attribute mapping, and the facts themselves are called attributes.

Analogy

Think of an international airport, where passengers from many countries fill in forms in different languages. A trained officer reads each form and writes the facts into the local system: name here, passport number there, date of birth in the correct format. Attribute mapping is that officer, working for every person and every app, thousands of times a day.

Where it matters in daily life

  • New accounts. When Okta creates an account in an app, mappings decide what goes into each field.
  • Changes. When a person’s title or manager changes, mappings decide which apps hear about it and in what form.
  • Sign-in. When a person signs in to an app, mappings decide which facts are placed in the sign-in message the app receives.
  • Imports. When Okta reads people from a directory or an app, mappings decide how those facts become the Okta profile.
  • Access decisions. Many rules for groups and policies rely on attributes, so a wrong value can quietly grant or block access.
!
Why care

A bad mapping rarely fails loudly. It usually produces plausible but wrong data: a person in the wrong department, a role that is too powerful, an email with the wrong domain. Wrong data is often worse than missing data, because nobody notices it until it hurts.

2Attributes, Profiles and Schemas

Before translating facts, you need to know what a fact looks like inside Okta. Three simple words cover it: attribute, profile and schema.

Attribute

An attribute is one named fact about a person, such as first name, email, job title or employee number. Each attribute has a name, a type (text, number, true or false, or a list) and rules about whether it is required, and whether it must be unique.

Profile

A profile is the full set of attribute values for one person in one system. The Okta profile for Priya holds her first name, last name, email, department and so on. The profile in a different app may hold only some of those facts, and some extra ones.

Schema

A schema is the blueprint of a profile: the list of all attributes that exist, with their types and rules. The profile holds the facts, and the schema describes what facts are allowed. Adding a new kind of fact means changing the schema first.

WordWhat it isEveryday comparison
AttributeOne named factOne question on a form
ProfileAll facts about one person in one systemOne filled-in form
SchemaThe list of allowed attributes and rulesThe blank form design
ValueThe actual answer in an attributeThe answer written in a box

Base and custom attributes

Okta’s user profile comes with a standard set of attributes called base attributes, such as first name, last name, email, login, title, department, manager, city and phone numbers. These are built in, and some of them cannot be removed. You can add your own, called custom attributes, for facts the standard set does not cover, such as badge number, cost center or contract end date.

Types and rules

Each attribute has a data type. Text is the most common. Others include number, true or false, and list of values. Types matter in mapping, because an app that expects a number will refuse the word “twelve”, and an app that expects a list will refuse one long sentence. Attributes also have rules, such as maximum length, allowed values, whether a value is required, and whether the value must be unique across all people.

Analogy

A job application form has fixed boxes: name, address, date of birth. The form design is the schema. Each applicant’s filled form is a profile. Each answer in each box is a value. Adding a new box, such as “preferred language”, means redesigning the form, not just writing in the margin.

3The Profile Editor and the Kinds of Profiles

Okta keeps several profiles side by side. The tool you use to see them and connect them is called the Profile Editor.

Where mappings live

In the Admin Console, the Profile Editor lists the profiles Okta knows about and lets you work with their attributes and their mappings. It is the home of attribute mapping. Menu names can differ slightly between versions, so look for Profile Editor under the Directory area.

The main kinds of profile

Core

Okta user profile

The central profile for every person. Every other profile is mapped to or from this one. Think of it as the master form.

Per app

App user profile

The profile of a person’s account inside one app. Each app integration has its own, with the fields that app understands.

Source

Directory profile

The profile of a person in a connected directory, such as Active Directory or LDAP. It is mapped into the Okta profile on import.

Source

Identity provider profile

The profile of a person who signs in through another identity provider, such as a partner company or a social login.

Source

HR or other master source

A system, such as an HR platform, that is the official record. Its profile is mapped into Okta so Okta’s data follows HR.

Other

User types

Okta can have more than one kind of user, such as employees and contractors, each with its own set of attributes.

Okta in the middle

The Okta user profile sits in the middle like a hub. Facts flow into it from sources such as HR, directories and other identity providers. Facts flow out of it to apps. Each arrow in this picture is a mapping. Keeping Okta in the middle means there is only one place that has to understand every system’s format: the mappings around the hub.

i
Good to know

You will often see people say “mapping to Okta” and “mapping to the app”. The first means facts flowing into the Okta profile from a source. The second means facts flowing out from the Okta profile to an app. Always ask which way a mapping goes before changing it.

Analogy

A central train station has many lines arriving and leaving. Passengers do not travel directly between small towns. They go through the hub and change trains. The Okta user profile is the hub, and each mapping is a track that connects a small town to the hub in one direction or the other.

4Directions: To the App and To Okta

Every mapping has a direction. Mixing up directions is the most common beginner mistake.

The two directions

For an app, there are two mapping screens, and they are separate. The Okta to App mapping controls what Okta sends into the app when it creates or updates an account. The App to Okta mapping controls what Okta takes from the app when it imports, and how that is written into the Okta profile.

flowchart LR
    SRC["Master source: HR or directory"] -->|"Source to Okta mapping"| OK["Okta user profile"]
    OK -->|"Okta to App mapping"| AP["App user profile"]
    AP -->|"App to Okta mapping"| OK
    OK -->|"Attribute statement or claims"| SO["Sign-in message to the app"]
    
Figure 1. The four places mappings are applied around the Okta user profile.

Reading the picture

On the left is the official source of facts. A mapping carries those facts into the Okta profile. From Okta, an outgoing mapping carries chosen facts to each app’s profile when accounts are created or updated. An incoming mapping from the app can bring facts back, if the app owns some of them. A fourth path, at the bottom, is not about accounts at all. It is about sign-in: when a person logs in, selected facts are placed into the sign-in message the app receives.

Who is the master?

For each attribute, one system should be the master, meaning its value is the one to trust. If HR is the master of job title, then the title flows from HR to Okta and onward to the apps, and nobody should edit it in the middle. If the app is the master of a fact, such as a locally chosen display name, then the flow goes the other way. Two masters for one attribute cause a tug of war in which each side keeps overwriting the other.

AttributeTypical masterFlow
Legal name, employee numberHR systemHR to Okta to apps
Title, department, managerHR systemHR to Okta to apps
Work emailOkta or HROut to apps
Preferred display nameSometimes the person or the appDecide once and keep one direction
App-specific roleOkta groups or the appDecide per app
Last sign-in timeThe appApp to Okta, if wanted at all
Analogy

In a family, one person keeps the official records at home, and everyone else holds copies. If two people each edit their own copy and then copy each other’s version over, the family will never agree on a birth date. Naming one master for each fact stops the argument before it starts.

5Core Vocabulary for Mapping

A small set of words appears in every mapping conversation. Learn these once and the Admin Console becomes much easier to read.

About the data

Data

Attribute

One named fact about a person, such as department.

Data

Variable name

The short internal name used for an attribute in mappings and expressions, such as firstName. It is different from the friendly display name.

Data

External name

The name the other system uses for the same fact, such as the field name an app expects.

Data

Data type

The kind of value allowed: text, number, true or false, or list.

Data

Master

The system whose value for an attribute wins.

Data

Null value

A missing or empty value, meaning no fact is recorded.

About the rule

Rule

Mapping

A rule that connects a source attribute to a target attribute.

Rule

Direct mapping

A mapping that copies a value unchanged.

Rule

Expression

A small formula that builds or changes a value before it is placed in the target.

Rule

Apply on

A setting that says whether a mapping runs on create and update, or on create only.

Rule

Constant

A fixed value sent for everyone, such as a default role.

Rule

Unmapped

An attribute with no rule, which means nothing is sent or received for it.

About where mappings are used

Use

Provisioning

Creating and updating accounts in apps.

Use

Import

Reading people from a directory or app into Okta.

Use

Attribute statement

The facts placed in a SAML sign-in message.

Use

Claim

A fact placed in an OpenID Connect token.

Use

Group rule

A rule that uses attributes to place people in groups.

Use

Reapply mappings

An action that pushes current mapped values again to an app.

Analogy

A multilingual phrasebook has words, phrases, rules for changing word order, and sections for the airport, hotel and restaurant. Mapping vocabulary has the same shape: the words for the data, the words for the rule, and the words for the place where the rule is used.

6How the Pieces Fit Together

A mapping is not a free-floating idea. It sits inside a small machine made of profiles, a mapping engine, and the places that use the result.

flowchart TD
    A["Fact changes at a source"] --> B["Source profile updated"]
    B --> C["Source to Okta mapping applied"]
    C --> D["Okta user profile updated"]
    D --> E{"Which uses need this fact?"}
    E -->|"Account sync"| F["Okta to App mapping applied"]
    E -->|"Sign-in"| G["Attribute statement or claim built"]
    E -->|"Access rules"| H["Group rules re-evaluated"]
    F --> I["App account updated"]
    G --> J["Next sign-in carries the new value"]
    H --> K["Group membership may change"]
    
Figure 2. A single change fans out through several mappings and rules.

Reading the picture

A fact changes first at its source, for example a manager is changed in the HR system. The source mapping carries the change into the Okta profile. From there, the same change may affect three different things. Apps that store the fact receive an update through the outgoing mapping. Apps that receive the fact at sign-in will see the new value the next time the person logs in. Group rules that use the fact are checked again, and group memberships may change, which in turn may change app access.

The mapping engine

The part of Okta that does this work can be called the mapping engine. For each rule, it reads the source value, applies the expression if there is one, checks the result against the target attribute’s type and rules, and writes it. If the result is invalid, for example too long or the wrong type, the write fails and an error is recorded. The rest of the profile is usually still processed, so one bad attribute does not always stop everything, but it may stop the whole create or update for the app, depending on the app.

Analogy

A factory conveyor belt carries a part to several stations. One station paints it, one stamps it, one checks the quality. If the quality station rejects the part, the part does not ship. The mapping engine is the line of stations, and the validation step is the quality check.

7Direct Mappings and Expressions

Some facts can be copied as they are. Others must be shaped first. Okta offers both options.

Direct mapping

A direct mapping simply copies the value. If the Okta first name is “Priya”, the app first name becomes “Priya”. Most mappings are direct, because most apps ask for the same simple facts that Okta already holds. Direct mappings are easy to read, easy to test and rarely cause surprises, so prefer them whenever they are enough.

Expression mapping

An expression is a small formula written in Okta’s Expression Language. It is used when the target needs something that the source does not hold directly. Common reasons are joining two facts, cutting a piece out of one, changing letter case, choosing between values, or building a value that follows a naming rule.

What you wantPlain description of the expressionResult for Priya Sharma
Display nameFirst name, a space, then last namePriya Sharma
Lowercase usernameThe email changed to lower casepriya.sharma@example.com
Short IDFirst letter of first name plus last namepsharma
Email domain onlyThe part of the email after the at signexample.com
Default when emptyUse department, or the word Unknown if emptySales, or Unknown
Role from levelIf level is above a number, manager, else staffstaff

Where expressions are allowed

Expressions can be used in several places: in profile mappings, in group rules, in SAML attribute statements, in OpenID Connect claims and in some policy conditions. The language is the same in all of them, which is a benefit, because a skill learned once can be reused. The available inputs differ slightly from place to place, so test each one where you use it.

Keep expressions simple

An expression is code, and code needs care. A long expression that nests many conditions is hard to read, hard to test and easy to break when somebody changes a profile field it relies on. A good rule is that if an expression needs a paragraph to explain, it probably belongs earlier in the pipeline, for example in the HR system or in a prepared custom attribute.

i
Tip

The Admin Console offers a preview or test for mappings, where you can pick a real user and see the output of an expression before saving. Use it on at least three different people, including one with missing values, because expressions often fail only on unusual data.

Analogy

A direct mapping is like photocopying a page. An expression is like a clerk who reads a page, combines two lines, fixes capital letters, and writes a fresh sentence. The clerk is more flexible, but also more likely to make a mistake, and harder to check.

Common things people do with expressions

  • Join facts. Combine first and last name into a display name, or build an email address from a username and a company domain.
  • Cut facts. Take the first letter of a name, the part of an email before the at sign, or the last four characters of a number.
  • Change case. Turn text into all lower case or all upper case so that comparisons work.
  • Choose between facts. Use one value when it exists and another when it is empty, so the target never receives a blank.
  • Test a condition. Send one value when a condition is true and another when it is false, such as a manager role for higher levels.
  • Look inside groups. Check whether a person belongs to a group and send a matching flag or role.

Each of these is small by itself. Trouble starts when several are stacked into one long formula. A good habit is to give every expression a short written purpose in your notes, such as “builds display name as first plus last, falls back to login”. When the purpose is clear, the next administrator can judge whether the formula still serves it.

8Where Mappings Are Used in Okta

The same idea appears in several different features. Each has its own screen and its own timing, so it helps to know them side by side.

PlaceDirectionWhen it runsWhat it affects
App provisioning mappingOkta to appOn account create and updateFields stored in the app
App import mappingApp to OktaOn importThe Okta profile
Directory import mappingDirectory to OktaOn import or syncThe Okta profile
Identity provider mappingProvider to OktaAt sign-in through the provider, and on just-in-time creationThe Okta profile
SAML attribute statementOkta to appAt every sign-inThe sign-in message
OIDC claimOkta to appWhen a token is issuedThe ID or access token
Group ruleInside OktaWhen a profile changesGroup membership

Provisioning mappings versus sign-in mappings

This distinction confuses many beginners. A provisioning mapping writes values into the app’s stored account, and they stay there until the next update. A sign-in mapping sends values in the login message every time, and the app usually reads them fresh at each login. Some apps use only one of the two. Others use both, and a mismatch between them is a classic source of “the right value is in one place and the wrong value in another”.

Import mappings

When Okta reads a person from a directory or app, the import mapping decides how each incoming fact is written into the Okta profile. A common design is to let a directory such as Active Directory be the master for name and department, so import mappings carry those facts in and the Okta profile follows the directory. In such a design, editing those fields directly in Okta is pointless, since the next import will overwrite them.

Identity provider mappings

When people sign in through another identity provider, such as a partner company, Okta can create or update their profile at login. The identity provider mapping decides what is taken from the incoming sign-in message and written into the Okta profile. This is the mapping side of just-in-time creation, and it needs the same care as any import.

Analogy

A hotel keeps two kinds of records about a guest. The registration card is written once at check-in and stays on file, like a provisioning mapping. The room key is encoded each time the guest gets a new key, with the current room and dates, like a sign-in mapping. If the card says room 204 and the key says room 305, the guest is confused. The two must agree.

9Types, Formats and Validation

A mapping can be perfect in meaning and still fail because the value is the wrong shape. Types and formats are where many failures hide.

Common mismatches

Shape

Text versus number

An employee number stored as text may be refused by an app that wants a whole number, and a number with leading zeros may lose them.

Shape

Single value versus list

A field that holds many values, such as roles, cannot be filled with one string, and the reverse is also true.

Shape

Date formats

A date can be written many ways. An app that expects year-month-day may reject day-month-year.

Shape

Length limits

A long job title may exceed the limit of the app’s title field and cause the whole create to fail.

Shape

Allowed values

An app may accept only a short list of countries or roles. Anything else is rejected.

Shape

Case and spaces

Some systems treat “Priya@Example.com” and “priya@example.com” as different people, and stray spaces make things worse.

Required and unique rules

If the target attribute is required and the source has no value, the create will fail. If the target must be unique and two people produce the same value, the second one will fail. A classic case is building a username from the first letter of the first name and the last name. Two people named “P Sharma” collide. A design that never considers collisions works on day one and fails on the day the second person with the same name arrives.

Defending against bad data

  • Validate early. Fix bad values at the master source so they never travel.
  • Normalize. Make the case and spacing consistent in one place, then trust it downstream.
  • Provide defaults. Where an app requires a value, supply a harmless default when the source is empty.
  • Plan for collisions. Add a number or another fact to usernames, and decide who resolves conflicts.
  • Test with ugly data. Try empty values, very long values, accents and apostrophes.
!
Watch out

Names with apostrophes, accents, hyphens or very long parts are normal in real life, and they break careless mappings. Test with them before you roll a mapping out to everyone.

Analogy

A vending machine accepts only certain coins. A correct amount in the wrong coin, or a bent coin, is rejected. Mapping validation is the coin slot: the value may have the right meaning, but if it is not the right shape, the machine will not take it.

A short story of one bad value

Consider a person named Anne-Marie O’Neil. Her last name has an apostrophe and her first name has a hyphen. An app builds usernames by joining the first letter of the first name to the last name, then removing anything that is not a letter. The result is “aoneil”, which is fine. But an older mapping in a second app does not remove the apostrophe, and that app refuses names with punctuation. Her account is created in the first app and fails in the second. Nobody notices for a week, until she asks why she cannot open a tool. The lesson is that the same person can succeed in one mapping and fail in another, so test each target separately.

It is also worth testing names that are very short, such as two letters, and names that are very long, such as a double-barreled surname with several parts. Real populations contain all of these, and a mapping that was only tried on simple names such as “John Smith” will meet surprises in production.

10Apply on Create, Apply on Update

A mapping has a second setting that is easy to miss: when it is allowed to run. This single choice decides whether a value is a one-time start or a living link.

The two timing choices

For app provisioning mappings, each attribute can be set to apply when the account is created and updated, or when it is created only. With create and update, every change in Okta is pushed to the app. With create only, the value is sent once at the start and then left alone, even if the Okta value changes later.

ChoiceBehaviorGood forRisk
Create and updateThe app always follows OktaName, title, department, manager, locationOverwrites changes made inside the app
Create onlySent once at account creationUsername, initial role, starting preferencesThe app may drift from Okta over time

Choosing for each field

Ask a simple question for each field: after the account exists, who should be allowed to change this value? If the answer is “only Okta or HR”, use create and update. If the answer is “the app owner or the person, inside the app”, use create only. Usernames are a special case. A username is usually the key that links the app account to the Okta user, so changing it later can break the link. Most teams set username to create only for that reason.

i
Tip

When a user complains, “I fixed my title in the app but it keeps changing back”, the cause is nearly always a field set to create and update, with Okta as the master. The fix is a conversation about who owns the fact, not a technical change.

Analogy

When you open a bank account, the bank writes your starting address once on the form. If your address changes, you can ask the bank to keep a live link to your main records, or let each branch keep the old address. “Create only” is the first copy on the form. “Create and update” is the live link.

11Profile Sources and Attribute Priority

When more than one system can feed the same Okta attribute, Okta needs a rule for who wins. That rule is called profile source priority.

The problem of many feeds

A company often has more than one system that knows about its people. HR knows the title. The directory knows the email. An app knows a phone number. All of them may want to write to the Okta profile. If two of them write the same attribute with different values, the final value depends on timing, and it can flip from one to the other without anyone noticing.

Ways Okta helps

  • Profile source. You can designate one source as the master for the whole profile, such as a directory or an HR integration. Okta then treats that source as authoritative.
  • Attribute-level sourcing. For individual attributes, you can say which source is allowed to write them, and in a priority order if more than one is allowed.
  • Read-only attributes. Attributes fed by a master can be locked so that administrators cannot edit them by hand in Okta.
  • Clear import mappings. Only mapping a field from the source that owns it makes the right behavior the default.

The exact options depend on your Okta features and edition, so check the current documentation for the controls available to you.

flowchart TD
    HR["HR system: owns title, department, manager"] --> OK["Okta user profile"]
    DIR["Directory: owns email and login"] --> OK
    APP["Application: owns last login time only"] --> OK
    OK --> A1["App one gets title and department"]
    OK --> A2["App two gets email and manager"]
    
Figure 3. Each attribute has exactly one feeding source, and apps receive from the hub.

Reading the picture

The diagram shows a clean design. Every arrow into Okta carries only the attributes that source owns. HR does not write email. The directory does not write title. The application writes only one narrow fact. Because no attribute has two sources, there is nothing to fight over. The two apps on the right receive from Okta only, so they always see consistent data.

Analogy

In a newsroom, the sports editor writes the sports page, and the business editor writes the business page. If both edited the front page headline at the same time, readers would see whichever version was printed last. Giving each page one editor removes that risk.

How to think about priority in practice

Priority is easiest to understand with a simple rule: the closest source to the truth wins. HR is closer to the truth about a job title than a directory is, because the directory usually copies it from HR or from someone’s manual entry. A directory is closer to the truth about a login name, because it is where the login is created. Write this down for each attribute, share it with the teams that own the systems, and ask them to confirm it. A short meeting that settles ownership prevents months of silent disagreement later.

When you cannot agree on a single master, choose the second best option: allow only one system to write the attribute at any time, and mark the other as read-only. A value that is always correct in one place, and is copied faithfully everywhere else, is far better than one that is sometimes right in several places.

12Custom Attributes and Schema Design

The standard attributes do not cover everything. Adding your own is easy. Adding the right ones, and in the right way, takes thought.

Why add a custom attribute

Typical reasons are to hold a cost center, a contract end date, a badge number, a region code, an access level, a business unit or a flag that says the person is a contractor. If a group rule, a policy or an app needs a fact that Okta does not hold, a custom attribute carries it.

Designing a good attribute

1

Name it clearly

Use a display name people understand and a short variable name without spaces. Choose names that will still make sense in three years.

2

Pick the right type

Use text for names, number for counts, true or false for flags and a list when more than one value is possible.

3

Restrict allowed values

If only a few values are valid, define them as a list. A fixed list stops typing mistakes that would break group rules.

4

Decide on required and unique

Mark an attribute required only when every person truly has a value. Mark it unique only when duplicates would be wrong.

5

Name the master

Write down which system owns the value, who may edit it, and how it gets in.

6

Set who can see it

Control whether administrators or people themselves can view or edit it, especially for sensitive facts.

Do not create too many

Each attribute has a cost: documentation, mapping, testing and risk of misuse. A profile with a hundred barely used attributes becomes confusing and slow to manage. Add an attribute only when a real use needs it, and remove those that nothing uses. Before adding, check whether an existing standard attribute, such as cost center or organization, already fits.

Attributes that carry decisions

Some custom attributes are not facts but decisions, such as “app access level”. These are dangerous when people can edit them, because the attribute becomes a way to grant access. If an attribute drives access, make it read-only for users, feed it only from a trusted source, and watch changes to it in the logs.

Analogy

Adding a column to a shared spreadsheet is simple, but every person who uses the sheet now has to understand and maintain it. A tidy sheet with clear column names and fixed drop-down lists stays useful for years. A sheet with sixty unclear columns is abandoned.

13Mapping and Groups

Groups are where attribute values turn into access. The link between the two is one of the most powerful and most misused parts of Okta.

Group rules

A group rule places people in a group automatically, based on their attributes. For example, a rule can say: if the department is Sales, add the person to the Sales group. When a person’s department changes, the rule runs again, removing them from the old group and adding them to the new one. If the Sales group is assigned to apps, the change in an attribute becomes a change in access with no one clicking anything.

Pushing groups to apps

Some apps have their own groups. Okta can push a group, with its members, into the app. This is a different kind of mapping, as it maps group names and members, not user attributes. The app group name usually follows the Okta group name unless you set it otherwise.

Groups in sign-in messages

Apps often need to know a person’s groups at sign-in so they can decide what the person may do. Okta can include groups in a SAML attribute statement or in an OpenID Connect claim. A filter decides which groups are sent, for example only those whose names start with a chosen prefix. Without a filter, an app may receive far more groups than it needs, which can leak information about the organization and enlarge the sign-in message.

UseWhat is mappedWhere to set it
Place people in groupsAttribute values to group membershipGroup rules
Give groups access to appsGroup to app assignmentApp assignments
Create matching groups in the appGroup name and membersPush groups
Tell the app the person’s groupsGroup names in the sign-in messageGroup attribute statements or claims
!
Careful

If a group rule uses an attribute that people can edit themselves, then people can choose their own groups, and therefore their own access. Use only attributes from trusted sources in rules that grant access.

Analogy

A school sorts students into houses by a fact on their form, such as the year they enrolled. The house decides which common room they can enter. If students could change the year on their own form, they could pick any house. The sorting rule is only as safe as the fact it reads.

Two attributes that look the same but are not

Beginners often confuse the login of a person with their email. The login is the name the person types to sign in to Okta. The email is where messages are sent. They often have the same value, but they do not have to. Some companies keep them different on purpose, for example a login based on an employee number and an email based on a name. Apps may want one, the other or both, so check which one each app expects and map it accordingly.

In the same way, the display name, the full name built from first and last name, and the nickname are different facts. If an app shows the wrong one in its user list, the cause is usually a mapping that points to the wrong source attribute, not a data error.

14SAML Attribute Statements and OIDC Claims

At sign-in, the app wants to know a few facts about the person. Okta supplies them in the sign-in message through a mapping of its own kind.

SAML attribute statements

In a SAML sign-in, Okta sends a signed message called an assertion. Inside it is a list of attribute statements, each with a name and a value. The administrator chooses the names the app expects and the Okta source for each value, either a profile attribute or an expression. Some apps require exact names, so a typo or a different capital letter can leave the app without the fact it needs.

OIDC claims

In an OpenID Connect sign-in, the same idea appears as claims placed in tokens. Some claims come from a requested scope, such as email or profile. Custom claims are added through the authorization server, with a name, a value expression, and conditions saying which tokens and scopes include them.

sequenceDiagram
    participant P as Person
    participant A as Application
    participant O as Okta
    P->>A: Opens the app
    A->>O: Please sign this person in
    O->>P: Asks for credentials and checks policy
    P->>O: Proves identity
    O->>O: Reads the user profile
    O->>O: Applies the attribute statement or claim mapping
    O->>A: Signed message with name, email, groups and roles
    A->>A: Reads the facts and decides what the person may do
    A->>P: Shows the app
    
Figure 4. Where the sign-in mapping is applied during a login.

Reading the picture

The mapping step happens inside Okta after the person proves who they are. Okta reads the current profile, builds each attribute or claim from its mapping, signs the message and hands it to the app. Because it happens at every login, the app receives current values. This is why a corrected title shows up at the next login even if the account stored in the app still holds the old one.

Choosing what to send

  • Send only what the app needs. Extra facts leak information and make messages larger.
  • Match the app’s expected names. Copy them from the app’s documentation without changes.
  • Pick a stable identifier. The main name identifier should never change for a person, or the app will treat them as a new user.
  • Be careful with sensitive facts. Do not send personal data to an app that has no need for it.
  • Test with a real login. Sign in and inspect what the app received, using the app’s own diagnostic view or a trace tool.
Analogy

A passport officer reads a traveler’s document and writes down only what the border system requires: name, nationality and expiry. They do not copy the traveler’s whole life story. A sign-in mapping should work the same way and send the minimum.

15Setting Up a Mapping Step by Step

Here is a safe route for adding or changing a mapping. The names of screens may differ slightly, but the order of thinking stays the same.

1

State the goal in a sentence

For example, “The app should show each person’s department, taken from HR, updated automatically.”

2

Find the master

Confirm which system owns the fact and that the value is clean there.

3

Check the Okta attribute

Open the Profile Editor for the Okta user. If the attribute is missing, add it with the right type and rules.

4

Check the target attribute

Open the app user profile and find the matching field. Read its type, length and required status.

5

Open the mapping

Open the mapping screen for the right direction, and choose the source for the target field.

6

Choose direct or expression

Use a direct mapping if it is enough. Otherwise write a simple expression.

7

Choose the timing

Choose create and update, or create only, using the question of who owns the value later.

8

Preview with real people

Use the preview to check the output for at least three people, including one with empty values.

9

Save and test on a small group

Apply to one test user, confirm the result in the app, then widen.

10

Record the decision

Write down the field, source, timing, owner and date, so the next administrator understands it.

i
Tip

Make one mapping change at a time in production. If two changes go in together and something breaks, you cannot tell which one caused it.

Analogy

Changing a mapping is like changing a road sign on a busy junction. You first check where each road leads, then change one sign, then watch the traffic. Changing five signs at once and hoping is how cars end up in the wrong town.

What to compare after a push

After any bulk push, compare three things for a sample of people: the value in the source, the value in the Okta profile, and the value in the app. All three should agree for fields that follow Okta. Differences point to a specific stage: a gap between source and Okta means the import or feed is at fault, and a gap between Okta and the app means the outgoing mapping or the app itself is at fault. Keep a small spreadsheet of sample checks, with dates, so you can show what was verified and when.

Also keep a way back. Before changing an important mapping, note the old rule exactly, including the timing setting. If the new rule causes trouble, you can restore the old one quickly. Pushing a corrected value again is then a second, calmer step, not an emergency rebuild.

16Changing a Mapping Safely: Reapply and Reconcile

Saving a new mapping does not always change the data already in the app. Knowing when old data is refreshed prevents surprises.

What happens after you save

A new mapping usually applies from the next create or update. People who already have accounts keep their old values until something triggers an update for them. If you want existing accounts to pick up the new mapping straight away, you can use an action to push the mapped values again, often called reapply mappings or a forced sync. The name and place in the console depend on the app and version.

Why wait, and why not

  • Pushing for everyone at once can be heavy. A bulk push for thousands of people can hit the app’s rate limits and slow other work.
  • A wrong mapping spreads fast. If you reapply before testing, you spread a mistake to everyone.
  • Letting it flow over time is gentler. Updates reach people as their profiles change, with no spike.
  • But old values may be wrong now. If the old mapping caused harm, such as wrong roles, waiting leaves the harm in place.

A cautious pattern

1

Test on one person

Force an update for a single test user and inspect the app.

2

Push to a small pilot group

Choose a few friendly users from different teams.

3

Check the log and the tasks page

Look for errors and for unexpected values in the app.

4

Widen in waves

Push to larger groups with checks between each wave.

5

Compare a sample

Pick a random sample and confirm the app matches Okta.

Analogy

When a library changes its catalog labeling system, it does not relabel every book overnight. It tries a shelf, finds mistakes, fixes the method and then continues shelf by shelf. Pushing a new mapping to every account at once is relabeling the whole library on the first try.

17Naming, Formatting and Normalizing

Many mapping problems are not about logic but about consistency. Small habits in names and formats prevent large headaches.

Names of attributes

Choose one style for variable names and use it everywhere. Short, lower-case first words followed by capitalized words are common. Avoid spaces and special characters. Avoid names that look like standard ones, such as another “department” with a slightly different spelling, because they cause people to map the wrong one.

Formats of values

Kind of valueSuggested standardWhy
EmailAll lower case, no spacesMany systems compare emails exactly
PhoneOne international formatApps differ in how they parse numbers
DateYear-month-dayIt sorts correctly and is widely accepted
CountryA standard two-letter codeAvoids spelling variations
DepartmentA fixed list of names or codesGroup rules need exact matches
Employee numberText with fixed lengthKeeps leading zeros

Where to normalize

Normalize as close to the master as possible. If HR writes “sales”, “Sales” and “SALES  ” in the department field, a group rule that looks for “Sales” will miss two of them. Fixing it in the HR system fixes it for every downstream user. If you cannot change the source, normalize once in the import mapping, and then every other mapping and rule can rely on the clean value.

i
Tip

Keep a short data dictionary: a table with each attribute, its meaning, format, master and owner. It is the cheapest tool for avoiding misunderstanding between the identity team, HR and app owners.

Analogy

If every person in an office writes dates their own way, the filing cabinet becomes impossible to sort. A rule that says “write dates one way” costs nothing to follow and saves hours every month.

18Empty Values, Timing and Order of Events

Attribute mapping lives in time. When a value arrives, when it is read and what happens if it is missing all change the result.

Empty values

A missing value can mean three different things: the person has no such fact, the fact has not arrived yet, or something broke in transit. A mapping should handle empty values on purpose. Options are to send nothing, to send a default, or to stop the action and raise an error. For a required target field, a default or a stop is necessary. For an optional field, sending nothing is usually best, but be aware that some apps treat “nothing sent” as “leave unchanged”, and others treat it as “clear the value”.

Order of events

In a new joiner flow, the account may be created before all the facts are ready. For instance, the manager may be filled in a day after the account is created. If the app needs the manager at creation, the create will fail or be incomplete. If it accepts a later update, the second update fills it in. Design your joiner process so that required facts arrive first, or so the mapping provides a default that later updates replace.

sequenceDiagram
    participant H as HR System
    participant O as Okta
    participant A as Application
    H->>O: New hire record with name and department
    O->>O: Apply source mapping
    O->>A: Create account with mapped values
    A-->>O: Account created
    H->>O: Manager assigned a day later
    O->>O: Apply source mapping
    O->>A: Update account with manager
    A-->>O: Update accepted
    
Figure 5. A joiner flow where a late fact arrives through a later update.

Reading the picture

The first message creates the account with the facts known at hiring. A day later, HR assigns the manager. The same mapping machinery detects the changed fact and sends an update. The key design point is that the mapping for manager must be set to apply on update, not create only. If it were create only, the manager would never reach the app.

Delays and eventual consistency

Changes travel through steps: the source, Okta, the app. Each step takes time, and some run on schedules, such as directory syncs or HR imports. So after a change in the master source, the target may stay out of date for minutes or hours. A system that is allowed to be briefly out of step but ends up correct is called eventually consistent. Plan for it: do not test immediately and declare failure, and tell users how long a change normally takes.

Analogy

When a company moves offices, the new address reaches suppliers and customers one at a time over several weeks. Some will still write to the old address for a while. The change is correct at the source and gradually reaches everyone. Mapped data travels the same way.

Privacy and minimum data

Some attributes are personal: home address, personal phone, birth date, national identifier. Mapping them to an app that does not need them creates risk with no benefit. If the app is breached, that data is exposed. If laws on personal data apply to your organization, sending extra data may also create legal duties. Ask of every mapped attribute: what does this app do with it, and what would happen if it were missing? If the answer to the second question is “nothing”, remove the mapping.

Remember also that sign-in messages travel through the person’s browser. They are signed, and they can be encrypted for apps that support it, but their contents may still be visible in logs or developer tools on the person’s own device. Avoid placing highly sensitive facts in them unless the app truly requires it and the message is protected.

19Security of Attribute Mapping

Attributes are not only data. They are often the reason a person is allowed in or kept out. Mapping errors can therefore become security problems.

Why attributes are security-relevant

Many decisions depend on attributes. A group rule reads the department to decide who joins the Finance group. An app reads a role claim to decide who is an administrator. A policy reads a flag to decide who may sign in without a second step. If the attribute is wrong, the decision is wrong. If someone can change the attribute, they can change the decision.

The main risks

Risk

Self-editable access facts

People can edit an attribute that a rule or app trusts, and so grant themselves more access.

Risk

Over-sharing in sign-in messages

Too many facts or groups are sent to an app that does not need them.

Risk

Changing identifiers

The attribute used to identify a person changes, so an app creates a new account or links to the wrong one.

Risk

Reusable email addresses

An email is used as a unique identifier, and later given to a different person, who then inherits the old person’s access.

Risk

Untrusted feeds

A partner identity provider or app is allowed to write attributes that drive access in Okta.

Risk

Silent bulk changes

A mapping change or reapply spreads wrong values to thousands of accounts without anyone noticing.

Protections

  • Keep access-driving attributes read-only for users. Allow edits only through the master source or by a small set of administrators.
  • Use stable, non-reusable identifiers. Prefer a permanent internal ID over an email or a name for the main identifier.
  • Send the minimum. Limit attribute statements, claims and group filters to what each app needs.
  • Limit who can edit mappings. Mapping administration is a powerful role. Give it to few people, with strong sign-in.
  • Restrict inbound writes. Let external providers write only the attributes you can safely trust, and nothing that decides access.
  • Review changes. Treat a mapping change like a code change: a second person reviews it, and the reason is recorded.
  • Log and alert. Watch the logs for changes to mappings, schemas and sensitive attributes.
!
Remember

If an attribute can change what a person can do, then the ability to change that attribute is an administrator-level power. Protect the editing path with the same care as the access itself.

Analogy

A building guard reads the color of a badge to decide which floors you may enter. If anyone could repaint their own badge, the colors would mean nothing. The paint shop, not the visitor, must control the color, and the guard must trust only badges from that shop.

Questions that speed up a support call

  • Is it one person or many? One person suggests bad data for that person. Many suggest a shared mapping or feed problem.
  • Did it ever work? If yes, ask what changed: a mapping edit, a schema change, a new feed or an app update.
  • Is it at creation or at change? Creation problems point to required fields and collisions. Change problems point to timing and update settings.
  • Is it provisioned or at sign-in? The two paths use different mappings and different tools to inspect.
  • Is the value empty or wrong? Empty values suggest an unmapped or blank source. Wrong values suggest a bad expression or a second writer.

Asking these five questions first often reduces a long investigation to a single targeted check. They are worth putting on a card next to the help desk.

20Monitoring, Logging and Troubleshooting

When a value is wrong, you need a calm method to find where it went wrong. The path from source to target has only a few steps, so the search is short if you do it in order.

Where to look

PlaceWhat it showsBest used for
Profile EditorAttributes, types and mappingsChecking the rule itself
Mapping previewOutput of the mapping for a chosen personTesting before and after changes
User profile pageThe current Okta values for one personSeeing what Okta really holds
App user recordThe values Okta sent to one appSeeing what the app should hold
System LogEvents for imports, updates, mapping changes and sign-insFollowing what happened and when
Tasks pageFailed provisioning actionsDaily clean-up of errors
Sign-in trace in the appThe exact message the app receivedDebugging attribute statements and claims

A calm way to find the cause

1

Name the symptom exactly

Which person, which app, which field, which value did you expect, and which did you see?

2

Check the master

Is the value correct in the source? If not, the problem is not in Okta.

3

Check the Okta profile

Is the value correct in the Okta user profile? If not, look at the import mapping and the feed.

4

Check the mapping

Is the target field mapped, from the right source, with the right timing? Use the preview for this person.

5

Check the app user record

What did Okta last send? If it matches Okta but not the app, the app changed or rejected it.

6

Read the log

Find the event for that person and read the result. Errors usually name the field.

7

Fix once, retest

Make a single change, force an update for the person, and confirm in the app.

Common problems and usual causes

Symptom

Value never changes in the app

The field is create only, unmapped, or the update switch is off.

Symptom

Value flips back

Two masters write the same fact, or the app overwrites it.

Symptom

Create fails for some people

A required field is empty, a value is too long, or a unique value collides.

Symptom

App says missing attribute at login

The statement name does not match what the app expects, or the source value is empty.

Symptom

Wrong groups or roles

A group rule reads a wrong or inconsistent attribute value.

Symptom

Odd characters in names

Encoding or accents are mishandled by an expression or by the app.

i
Tip

Walk the chain from the source forward, never from the app backward. The first place where the value is wrong is the place where the problem started. Everything after that place is only a messenger.

Analogy

When a letter arrives with the wrong address, you trace it back through the sorting office, the post box and the sender’s handwriting. The error started at the first stage where the address was already wrong. Fixing the last stage would not help.

21Advantages, Disadvantages and Trade-offs

Central, rule-based mapping is very useful. It also brings costs and design choices that deserve open discussion.

Advantages

  • One place holds the logic for translating facts.
  • Apps receive consistent, correct data.
  • Changes in one source reach many apps automatically.
  • Access rules based on attributes become automatic.
  • Audits are easier with a documented data flow.
  • New apps are added faster by reusing patterns.
  • Manual typing errors disappear.

Disadvantages

  • A wrong rule spreads wrong data quickly.
  • Mappings are easy to forget and hard to discover later.
  • Expressions are code and need testing and review.
  • Dependence on clean source data is high.
  • Apps differ, so each needs its own careful setup.
  • Delays between systems can confuse users.
  • Too many custom attributes make the profile heavy.

Design decisions to make on purpose

Decision AShape data in the source, or inside Okta?

Choice: Fix and standardize in the master source whenever possible, and use Okta expressions only for app-specific shaping.

Why: Every downstream system benefits, and fewer expressions must be maintained.

Cost: Requires cooperation from the team that owns the source.

Decision BSend many attributes, or only what is needed?

Choice: Send the minimum each app needs, at provisioning and at sign-in.

Why: Less data exposed, fewer failures, easier reviews.

Cost: Adding a field later needs a small change and a test.

Decision CProvisioned attributes or sign-in attributes?

Choice: Use sign-in attributes for facts that must always be current, and provisioned attributes for facts the app stores and searches.

Why: Each method matches how the app actually uses the fact.

Cost: Two places to configure and keep in agreement.

Analogy

A central translation office makes sure every letter in a company reads the same way. It saves enormous effort and mistakes. But a single wrong rule in the office, such as translating “manager” as “owner”, spreads into every letter until someone notices.

Review rhythm

Mappings age. People leave the team that wrote them, apps change their field names, and the company reorganizes. A light review twice a year keeps them healthy. Walk through each app: are the mapped fields still used, is each master still correct, are expressions still needed, and are access-driving attributes still protected? Remove what is unused. A smaller set of mappings is easier to trust.

22Patterns, Anti-patterns and Best Practices

Teams that manage mappings well repeat a handful of habits. Teams that struggle repeat a handful of mistakes.

Good patterns

Pattern

One master per attribute

Every fact has one owner and one direction of flow.

Pattern

Hub design

Everything flows through the Okta profile, so apps never feed each other directly.

Pattern

Prefer direct mappings

Expressions only when a direct copy cannot work.

Pattern

Stable identifiers

A permanent internal ID is the link between systems.

Pattern

Data dictionary

A simple table of every attribute, its owner and its format.

Pattern

Test with awkward data

Long names, accents, empty values and duplicates are tested first.

Anti-patterns to avoid

Avoid

Two masters

Both Okta and the app write the same field, so it flips back and forth.

Avoid

Email as permanent key

Emails change and get reused, which breaks links and can pass access to the wrong person.

Avoid

Giant expressions

A long nested formula nobody understands, with the author long gone.

Avoid

Editable access attributes

Users can change facts that decide their own groups and roles.

Avoid

Send everything

Every attribute is mapped to every app, just in case.

Avoid

Undocumented changes

Mappings are edited in production with no record of why.

A short checklist

  • Does every mapped attribute have a named master?
  • Is each mapping direction clearly understood and documented?
  • Is the apply timing chosen on purpose for each field?
  • Are access-driving attributes protected from self-editing?
  • Has each mapping been previewed for several people, including empty cases?
  • Does the sign-in message send only what the app needs?
  • Is there an owner and a review date for each mapping set?
Analogy

A well-run warehouse has a label on every shelf, a rule for where each kind of item goes, and one person who decides changes. Nothing about it is exciting, and everything about it prevents the day when the wrong parts are shipped to a customer.

23Scale, Performance and Reliability

Mapping is cheap for one person and heavy for fifty thousand. Planning for scale keeps changes safe and quick.

Where the load comes from

A single mapping change can touch every person who has an account in an app. If a company has thirty thousand people and ten apps, a mapping change that is reapplied to everyone can create hundreds of thousands of update requests. Large imports from a directory or an HR system also carry thousands of records at once. These are bursts of work, and the apps at the receiving end usually limit how fast they will accept requests.

Practical habits for scale

  • Reapply in waves. Push in groups, with checks between waves.
  • Change at quiet hours. Run large pushes outside busy working times.
  • Map only what is needed. Fewer attributes mean smaller messages and fewer failure points.
  • Avoid frequent noisy attributes. A value that changes every minute, such as last activity time, should not trigger updates everywhere.
  • Know each app’s limits. Note rate limits and plan large changes around them.
  • Keep expressions light. Simple expressions run fast and are easy to reason about.
flowchart LR
    CH["Mapping change saved"] --> PL["Plan waves: pilot, team, department, company"]
    PL --> W1["Wave 1: pilot group"]
    W1 --> C1{"Errors or wrong values?"}
    C1 -->|"Yes"| FX["Stop, fix the mapping, retest"]
    FX --> W1
    C1 -->|"No"| W2["Wave 2: larger group"]
    W2 --> C2{"Errors or wrong values?"}
    C2 -->|"Yes"| FX
    C2 -->|"No"| W3["Wave 3: everyone"]
    W3 --> DONE["Sample check and record the result"]
    
Figure 6. A staged rollout of a mapping change with a stop-and-fix loop.

Reading the picture

The plan splits the change into waves, from a small pilot group to the whole company. After each wave comes a check for errors or wrong values. If the check finds a problem, the process stops, the mapping is fixed and the wave is tried again. Only after a clean result does the next, larger wave begin. The loop is the safety feature. It makes sure a mistake is found on ten people, not on ten thousand.

Reliability

If an app is temporarily down, provisioning updates are retried, so values arrive once the app is back. If an import from a directory fails, the Okta profile keeps its last good values, but they may become out of date. After any outage, compare a sample of people between the source, Okta and the app to confirm that everything has caught up.

Analogy

A city changes a street name one district at a time. It checks that the signs, maps and mail delivery in the first district work before changing the next. If the first district goes badly, the city stops and fixes the plan before more districts are affected.

24A Worked Example: Fixing Department at Northwind

To make everything concrete, follow a fictional company, Northwind Retail, as it fixes a messy department attribute.

Day 1

The symptom

The Finance group is missing many finance staff. Some people have access to finance tools without being in Finance. The help desk is flooded with access requests.

Day 2

Walking the chain

The administrator starts at the HR system and finds three spellings of the same department: Finance, finance and Fin. The group rule looks for the exact word Finance, so the other spellings miss the rule.

Day 3

Finding who also writes the value

The directory import also writes the department, and uses a different list of names. The two feeds disagree, and the value flips depending on which ran last.

Day 4

Choosing one master

Northwind decides that HR owns department. The directory import mapping for department is removed. HR agrees to use a fixed list of department names.

Day 5

Cleaning the source

HR fixes the existing records and turns the field into a drop-down list, so new typing mistakes cannot happen.

Day 6

Locking the Okta attribute

The department attribute in Okta is made read-only for people and administrators, so only the HR feed can change it.

Day 7

Testing and waves

The team previews the group rule for several people, applies it to a pilot group, checks memberships, and widens in waves. The finance tools now match the Finance group.

Day 8

Recording the decision

The data dictionary now says: department, owner HR, format fixed list, read-only in Okta, used by group rules and by the sign-in statement for the finance reporting tool.

What the example teaches

The problem showed up in access, but its cause was a small data habit: a free-text field with two feeds. The cure was not a clever expression. It was a clear master, a clean source, a locked attribute and a staged rollout. Notice also that no step involved guessing. At each stage, the team compared the value at one place with the value at the next, and followed the chain until they found where it first went wrong.

Notice, too, what was not done. The team did not add an expression that tried to guess the right department from three spellings. That would have hidden the problem and left a fragile formula behind. Fixing data at its source is almost always cheaper than shaping it downstream.

i
Tip

When a mapping problem appears to need a clever expression, pause and ask whether the data should be fixed upstream instead. A clean source makes mappings short, and short mappings rarely break.

25Real-World Examples

Different organizations use attribute mapping in different ways. These short pictures show common situations.

A company with HR as the master

The HR platform feeds Okta with name, title, department, manager, location and employee number. Okta maps only needed facts out to each app. Department and location drive group rules, which assign access to tools. Nobody edits these facts in Okta or in the apps.

A company still using a directory as master

Active Directory is the master for name, login and department. The import mapping brings these into Okta. The team locks those attributes in Okta, so edits in the console are not lost on the next sync. Over time, they plan a move to an HR-driven design.

A partner company signing in through its own identity provider

Partner staff sign in through their own provider. The identity provider mapping brings in name and email, and sets a fixed attribute that marks them as external. A group rule places external people in a restricted group. The mapping is not allowed to write any attribute that decides internal access.

An app that needs roles in the sign-in message

A project tool reads a role claim at sign-in. The team defines three groups, one for each role. The sign-in mapping sends the group names with a filter for the tool’s prefix. A person’s role changes at the next login, and nobody edits accounts in the tool.

A company with contractors and employees

Employees and contractors use two user types with different attributes. Contractors have an end date, and employees have a manager and a cost center. Mappings differ per user type, and the contractor end date drives a rule that removes access on time.

A company after a merger

Two companies have different attribute names for the same facts. The team builds a data dictionary, picks one name for each fact, and writes import mappings from each old source into the shared Okta profile. After that, apps are moved onto the shared profile one at a time.

26Frequently Asked Questions

Short answers to the questions beginners ask most.

Q1 What is the difference between an attribute and a mapping?

An attribute is one fact about a person. A mapping is a rule that connects an attribute in one place to an attribute in another place, optionally changing it on the way.

Q2 Where do I edit mappings?

In the Admin Console, mostly in the Profile Editor, where each profile and its mappings are listed. Sign-in mappings for SAML apps are in the app’s sign-on settings, and claims for OpenID Connect are in the authorization server. Exact menu names can change, so check your console.

Q3 Why does my change not appear in the app?

Common reasons are that the field is set to create only, the update action is off, the field is unmapped, or the app has not processed the update yet. Check the app user record and the System Log.

Q4 Why does a value keep changing back?

Two systems are both writing the same fact. Choose one master and remove the other path.

Q5 What is an expression, and when should I use one?

An expression is a small formula in Okta’s Expression Language, used when the target needs a value built or changed from the source. Use one only when a direct mapping is not enough, and keep it simple.

Q6 Do I need a custom attribute for every new fact?

No. First check whether a standard attribute fits. Add a custom attribute only when a real use needs it, and give it a clear name, type and owner.

Q7 What is the difference between provisioning mappings and sign-in mappings?

Provisioning mappings write values into the account stored in the app, and they stay until the next update. Sign-in mappings place values in the login message every time the person signs in.

Q8 Can users edit their own attributes?

You can allow it for some fields. Never allow it for attributes that group rules, apps or policies use to decide access.

Q9 Does a saved mapping update existing accounts?

Usually only when the next update happens for each person. To refresh everyone sooner, use a reapply or force sync action, preferably in waves after testing.

Q10 What should the main identifier be?

A value that never changes and is never reused, such as a permanent internal ID. Emails and names change and can be reused, which can break links or pass access to the wrong person.

Q11 How do I handle people with no value for an attribute?

Decide on purpose. For required target fields, send a default or stop with an error. For optional fields, send nothing, but check how the app treats a missing value.

Q12 How should I document mappings?

Keep a data dictionary listing each attribute, meaning, format, master, direction of flow, timing and owner. Record every change with a date and reason.

27Summary and Key Takeaways

Attribute mapping is the translation layer that lets Okta, apps, directories and identity providers share facts about people correctly.

Okta keeps a central user profile as a hub. Mappings carry facts into that hub from sources such as HR and directories, and out of it to apps, both when accounts are provisioned and when people sign in. A mapping can be a direct copy or a small expression, and it can apply on create only or on create and update. Good results depend on one master per fact, clean source data, stable identifiers, read-only protection for access-driving attributes, sending only what each app needs, and testing with awkward data before rollout. When something looks wrong, trace the value from the source forward, and the first place it is wrong is where the problem began.

Key Takeaways

  • A mapping connects a source attribute to a target attribute, with a direction and a timing.
  • The Okta user profile is the hub, and every other profile is mapped to or from it.
  • Give every attribute exactly one master and one direction of flow.
  • Prefer direct mappings, keep expressions simple, and preview with real, awkward data.
  • Protect attributes that decide access from self-editing and from untrusted feeds.
  • Send the minimum to each app, in provisioning and in sign-in messages.
  • Change and reapply mappings in waves, and trace problems from the source forward.