Configuring the User Sync Tool #
Overview #
User Sync Tool behavior is governed by a set of configuration files.
These files are typically placed in the same directory as the User Sync Tool executable.
Although this overview covers the configuration files for Sign Sync, this page focuses on UMAPI sync. See Sign Sync for details around configuring Sign Sync.
After a brief overview of the configuration files used by the User Sync Tool and
some general notes, this page focuses on the configuration options used in
user-sync-config.yml.
Core Configuration (Admin Console) #
These configuration files are required to synchronize users to the Admin Console.
user-sync-config.yml- Main config file for Admin Console Syncconnector-umapi.yml- Defines connection to the User Management API. Stores credentials (or keychain references) and defines advanced connection options. If you plan to synchronize to multiple UMAPI targets, then each connection is configured in a different UMAPI connector config file.
Core Configuration (Sign Sync) #
These configuration files are required to synchronize users to Adobe Acrobat Sign.
sign-sync-config.yml- Main config file for Sign Syncconnector-sign.yml- Defines a connection to a Sign account (using the Sign API). Multiple connections are supported (each in their own connector config file).
Directory Connector Configuration #
These configuration files define connections to various identity sources. They
can be used with both UMAPI sync and Sign Sync. They are only required if the
connector is enabled. The exception - when using UMAPI sync, connector-csv.yml
is totally optional assuming the CSV uses the standard headers and encoding
(utf-8). The CSV connector is required when using Sign Sync.
connector-ldap.yml- Defines connection to an LDAP system such as Active Directoryconnector-okta.yml- Defines connection to an Okta tenant (using the Okta API)connector-adobe-console.yml- Defines a connection to the UMAPI for treating an Admin Console organization as an identity source. Useful in cases when synchronizing to a console-linked Sign account, or when syncing to an Admin Console org with a trusted Azure AD-synced directoryconnector-csv.yml- Defines header columns and encoding of CSV input file
Advanced Configuration #
The extension config (extension-config.yml) can be set up for use with UMAPI
sync to get more control over how syncs are executed. See advanced
configuration for
details.
Config File Setup #
Example configuration files can be obtained in several ways:
- In the
examplesfolder of the code repository - The example bundles (
user-sync-examples.ziporuser-sync-examples.tar.gz) on any release page - Running
./user-sync initor./user-sync example-configfrom the command line (recommended)
Configurations files are in YAML format and use the yml
suffix. When editing YAML, remember some important rules:
Indentation governs scope and heirarchy (as opposed to a system like JSON which uses curly braces)
Keys and values are delimited with a single colon (
:) followed by a space charactersome_key: A ValueA dash (
-) denotes a list item# example with one item adobe_groups: - Photoshop Users # example with multiple items adobe_groups: - Photoshop Users - Lightroom Users - Illustrator Users
Tip: use a developer-friendly text editor such as Notepad++ for maximum ease-of-use.
If you’re not using Windows, we recommend an editor with these features.
- Line numbers
- YAML syntax highlighting
- Smart indentation
- Ability to set line endings and file encoding
- Ability to show special characters (tabs, line endings, etc)
user-sync-config.yml Example
#
A basic example:
adobe_users:
exclude_identity_types:
- adobeID
exclude_adobe_groups:
- _org_admin
exclude_users:
connectors:
umapi: connector-umapi.yml
directory_users:
default_country_code: US
connectors:
ldap: connector-ldap.yml
user_identity_type: federatedID
groups:
- directory_group: adobe-all-apps
adobe_groups:
- All Apps
limits:
max_adobe_only_users: 10%
logging:
log_to_file: true
file_log_directory: logs
file_log_name_format: '{:%Y-%m-%d}.log'
file_log_level: debug
console_log_level: debug
invocation_defaults:
adobe_only_user_action: preserve
adobe_only_user_list:
adobe_users: all
connector: ldap
process_groups: Yes
strategy: sync
test_mode: False
update_user_info: True
user_filter:
users: mapped
adobe_users Config
#
The adobe_users config key contains all of the options pertinent to Adobe-side
sync management.
- Define Admin Console/User Management API (UMAPI) sync targets
- Define rules to exclude certain users from sync
- Exclude certain identity types
- Exclude certain groups
- Exclude specific users by email address regular expression
Note that the exclusion rules defined here only apply to the Adobe-side workflow. That is to say these filters are applied to user information queried from the Admin Console using the UMAPI.
exclude_identity_types
#
This option defines a list of identity types to exclude. It generally should
just be set to adobeID since it isn’t common for a console to have both
enterpriseID directories and federatedID directories.
Example:
exclude_identity_types:
- adobeID
adobeID users should generally always be excluded as a best practice.
exclude_adobe_groups
#
Here the config defines a list of user groups or product profiles to exclude from sync.
This can include any user group, product profile, or admin group you wish to exclude from sync.
At minimum, it should include the special group name _org_admin which denotes
users with system admin privileges.
exclude_adobe_groups:
- _org_admin
Note that you may have other users you might wish to exclude here - developer accounts, support admins, etc. They should also be excluded here if needed.
exclude_users
#
Exclude individual users by email address or a list of users with a regular expression.
Example:
exclude_users:
- "freelancer-[0-9]+.*"
connectors
#
adobe_users.connectors defines one or more connections to the User Management
API (UMAPI).
Each connection should at minimum contain a reference to the UMAPI connector
config (e.g. connector-umapi.yml). Secondary targets also
require an identifier field.
Single Target #
To configure a single target, connectors should be set to a single
configuration file reference. This should point to your main UMAPI config (e.g.
connector-umapi.yml).
adobe_users:
connectors:
umapi: connector-umapi.yml
The umapi key tells the sync tool that the UMAPI connector is in use.
Multiple Targets #
To target multiple console organizations, the umapi key is specified as a list
instead of a plain string.
Each target must have its own connector configuration file as well as its own set of UMAPI credentials.
The User Sync Tool expects all target consoles to be related via directory trust.
- The main target should own the directories and domains associated with UST-managed users
- Other targets should be trustees of the main target
This primary-secondary structure is represented in the adobe_users.connectors
config:
adobe_users:
connectors:
umapi:
- connector-umapi.yml
- org2: connector-umapi-org2.yml
Under the umapi key, the config file for the primary (identity-owning) target
is specified as a plain string. Each secondary target is specified as a
key-value pair with the key being a unique identifier for the target. This ID is
used for several key purposes:
- Targeting org-specific groups in the group mapping
- Distinguishing between targets in log messages
- Identifying different targets internally
update_attributes
#
When --update-user-info/update_user_info is enabled (see runtime config), the user attributes updated for a given user can be
controlled with update_attributes.
adobe_users:
#...
update_attributes:
# - username
- firstname
- lastname
- email
By default, the firstname, lastname and email attributes are enabled for
updating. username is disabled by default.
If sync is run with update_user_info enabled and any changes are detected to a
disabled attribute for a given user, the Sync Tool logs a warning:
2023-07-12 13:32:55 54531 WARNING processor - 'username' has changed for user
> 'federatedID,test.un.01@example.com,,test.user.01@example.com',
> but that attribute isn't configured for updating
[line continuations added for clarity]
directory_users Config
#
Every option under the directory_users key pertains to managing general
identity source behavior. This includes:
- Defining the connector type
- Linking the connector config file
- Defining default country code and identity type
- Defining how directory groups map to Adobe groups
default_country_code
#
The country code is a mandatory attribute for every Adobe user. It governs the location in which a user’s data is stored, among other things.
When creating federatedID users, the country code must be specified on user
creation. On enterpriseID and adobeID users, it can be set to UD to leave
the country undefined. In this case, the user will select their own country when
they log in for the first time.
Except for UD (which is not a valid country code), the country code must be a
valid ISO-3166-1 alpha-2
code.
default_country_code defines the code to use when the identity source does not
specify a country code for a given user. It is only set for a given user whose
“country” field is empty. If a user’s country is set to anything, even a country
in a format not accepted by the UMAPI, the Sync Tool will attempt to set it for
a user. This operation will only succeed if the country code is in the expected
format.
The extension config can be used to normalize country codes that aren’t in the expected format.
connectors
#
The connectors key under directory_users is where identity source connectors
are defined. This is done by setting the connector type as the key and the
configuration filename as the value.
Multiple connectors can be defined here (though only one can be enabled at any given time).
Example:
directory_users:
connectors:
ldap: connector-ldap.yml
csv: connector-csv.yml
adobe_console: connector-adobe-console.yml
okta: connector-okta.yml
Once an identity connector is configured, it must be enabled to be used. The connector can be enabled in the invocation defaults settings or command-line options.
user_identity_type
#
The default identity type of new users is controlled by the user_identity_type
option. This can be overridden by identity options that may be available via
identity source connectors.
Valid options are adobeID, enterpriseID and federatedID.
Here is some additional information about Adobe’s different identity types.
Note: in the UMAPI, Business IDs are represented by their underlying linked account types. In other words, there is no
businessIDtype.
groups
#
The groups option defines a mapping that describes rules for how identity
source groups should govern Adobe groups.
Structure:
groupsconsists of a list of at least one mapping object- Each mapping object has two keys
directory_group- Name of directory group to mapadobe_groups- List of zero or more Adobe groups to map
Example:
groups:
- directory_group: adobe-acrobat
adobe_groups:
- "Default Acrobat Pro DC configuration"
- directory_group: adobe-creative
adobe_groups:
- "Default Photoshop CC - 100 GB configuration"
- "Default All Apps plan - 100 GB configuration"
In this example, any user queried by the identity source belonging to the source
group adobe-acrobat is assigned the Adobe group Default Acrobat Pro DC configuration.
Any user beloning to the directory group adobe-creative is assigned both of
these Adobe groups:
Default Photoshop CC - 100 GB configurationDefault All Apps plan - 100 GB configuration
Users assigned to both adobe-acrobot and adobe-creative will be assigned all
three Adobe groups in the mapping.
Group Types #
The User Management API doesn’t distinguish between product profile group names and user group names. They are treated identically when assigning group membership to a user.
The only way the use of user groups is different is if automatic group creation is enabled.
Admin roles can be assigned to users by the User Sync tool using special group names and prefixes. Using these special naming conventions, admin roles can be assigned like any normal product profile or user group.
| Admin Role | Name or Prefix |
|---|---|
| System Admin* | _org_admin |
| Support Admin | _support_admin |
| Deployment Admin | _deployment_admin |
| User Group or Profile Admin | _admin_[GROUP_NAME] |
| Product Admin | _product_admin_[PRODUCT_NAME] |
* The User Management API does not currently support the assignment of the System Admin role. This means that System Admins cannnot be assigned in the group mapping. This role can however be used in the
exclude_adobe_groupsconfiguration.
Notes about the Product Admin role:
- It may be necessary to manually assign a user as admin to a product before syncing users as product admins.
- The product admin role group name is case-sensitive.
- It is often necessary to assign users to at least one profile on the same product as the admin role.
See the UMAPI Docs for more details.
additional_groups
#
Configures dynamic group mappings based on regular expression rules. See advanced config for more information.
group_sync_options
#
group_sync_options controls the synchronization of user groups. The only
supported option at the moment is auto_create which will automatically create
user groups targetted by the group mapping. See advanced config for more information.
limits Config
#
User offboarding behavior (i.e. the Adobe-only user action) can be a destructive operation. Care should be taken with how your user sync workflow is configured.
In particular, the following adobe_only_user_action (or
--adobe-only-user-action) options can have potentially undesirable side
effects.
preserve- Removes mapped Adobe groups. Users offboarded with this method will lose access to groups/products they were provisioned with the User Sync Tool. User data should not be impacted.remove-adobe-groups- Removes all Adobe groups for offboarded users. This will also strip offboarded users of admin privileges.remove- Remove offboarded users from the Console’s Organization Users list. Stored Creative or Document Cloud data will not be deleted. User settings in other Adobe products may be affected.delete- Delete offboarded users from the underlying identity directory. User stored in Creative or Document Cloud will be subject to deletion.
The max_adobe_only_users setting is used to protect an Adobe userbase from the
adobe_only_user_action from operating on a large number of users. If the limit
defined by max_adobe_only_users is exceeded, the Adobe-only user action is not
executed at all. This can happen when something changes in the identity source
or in the User Sync Tool configuration to impact the number of Adobe-only users
identified during a sync.
max_adobe_only_users can be set to a hard number or a percent.
- Hard number - The limit is checked against the total number of Adobe-only
users (as governed by the
adobe_userssetting). - Percent - The limit is computed as a percentage of total users (as governd by
the
adobe_userssetting).
Example scenarios:
max_adobe_only_users | Total Adobe Users | Directory Users | Adobe-only Users | Outcome |
|---|---|---|---|---|
| 200 | 1000 | 900 | 100 | Adobe-only users are processed |
| 200 | 1000 | 750 | 250 | Do not process Adobe-only users |
| 20% | 1000 | 900 | 100 | Max is 200 (20% of 1000) so Adobe-only users are processed |
| 20% | 1000 | 750 | 250 | Max of 200 (20% of 1000) exceeded, so Adobe-only users are not processed |
logging Config
#
The User Sync Tool produces log messages describing what it is doing. Log
messages are written to the console (stdout) from which the tool was invoken
and optionally to a log file.
Logging behavior is governed by the logging option.
Example:
logging:
log_to_file: true
file_log_directory: logs
file_log_name_format: '{:%Y-%m-%d}.log'
file_log_level: debug
console_log_level: debug
log_to_file
#
File logging is toggled by log_to_file. Set to true to write log messages to
the filesystem and false to suppress file logging.
If log_to_file is enables, then the other file-related options should be set
as well.
file_log_directoryfile_log_name_formatfile_log_level
file_log_directory
#
Log files are written to files in a dedicated directory. The directory where
logs are written is set by file_log_directory.
This can be set to a path relative to the Sync Tool. For example, setting it to
logs when the Sync Tool is in the directory /home/user-sync will write log
files to the directory /home/user-sync/logs.
file_log_directory can also be set to an absolute path.
file_log_name_format
#
File log messages are appended to the file defined by file_log_name_format.
This can be set to a static filename such as user-sync.log. Or date/time
information can be encoded using curly braces {}.
Any of these formatting codes can be used.
For example, to set the filename to the date in yyyy-mm-dd format,
file_log_name_format can be set to {:%Y-%m-%d}.log.
Note: The date is formatted at the beginning of the sync workflow.
Log files that don’t exist will be created automatically.
file_log_level and console_log_level
#
These options control the verbosity for log files and console (stdout) output
respectively.
Each level adds more information to the logs. These are the supported levels, in
order from least verbose to most verbose. The higher verbosity levels include
messages from lower levels. In other words debug includes all other message
types.
criticalOnly log critical errors that generally impact the overall sync process.
errorLog errors of any kind, even those that may not halt or negatively impact sync.
warningWarnings include messages that warrant attention but are not serious. Reasons include deprecated functionality, missing identity source data, etc.
info(default)Informational log messages. General information around sync behavior including summary info.
debugAny lower-level debug information: configuration options, raw API call payloads, etc. This information can be critical for debugging issues with User Sync Tool config, but can increase log file sizes significantly.
invocation_defaults Config
#
See Runtime Config for information about the Sync Tool’s
invocation_default options and how they interact with the tool’s command-line
options.