Enterprise Identity Plugin Lists And Actions
DingTalk, Feishu, and WeCom share the list operations described here. This page explains columns, buttons, and dialogs. Provider-specific dynamic fields are covered in DingTalk, Feishu, and WeCom. See Enterprise Identity Plugins for permissions, synchronization policies, and the overall setup sequence.
Find A List
Open an installed plugin under Integration → Apps. Its left menu contains:
| Menu | Contents |
|---|---|
| App Information | Version, runtime status, declared permissions, callback URL, and sign-in entry; use Edit App for provider credentials |
| Organization Mapping → Organizations | External root organizations and their bindings to existing Soln organizations |
| Organization Mapping → Departments | External departments, parent relationships, and bindings to Soln departments |
| Organization Mapping → Users | External members, departments, and bindings to Soln members |
| Message Push → Push Configuration | Business app notification switches and template scope; DingTalk also has AgentId |
| Message Push → Message Logs | Delivery records, recipients, results, and retry for the current plugin source |
Left-menu search finds menus rather than members or messages. Mapping and notification entries require permission to manage app installations. Enable a disabled plugin before fetching its directory or managing push settings.
Organization, Department, And User Lists
These lists contain external directory snapshots and bindings. Cells do not edit provider profiles, and rows have no action to create or delete external members. Change external profiles on the provider, then fetch again.
Toolbar
| Control | Usage and effect |
|---|---|
| Search | Enter text and submit or press Enter. Searches external names, IDs, parent/department names, and raw returned field values. Clearing restores all rows. It does not search bound Soln names or translated status labels |
| Download icon | Exports all rows of the current object type matching the submitted search, beyond the current page. Excel includes fixed columns, dynamic fields, and bindings, without action buttons |
| Sync Organization Structure | Opens organization, department, and member field mappings for this plugin. Every directory list opens the same shared synchronization settings |
| Automatic Binding | Sets matching rules for the current object type; an organization rule is not a department or member rule |
| Fetch Directory | Calls the provider and updates all three directory collections for this plugin. Successful fetches apply saved automatic binding rules and run structure synchronization if enabled |
| Refresh icon | Reloads the saved current list without initiating a provider fetch. Use it to see data already updated in the background |
Hover over Fetch Directory to see the last fetch time, rather than an individual profile's modification time. Before the first successful fetch, the page asks you to fetch and disables automatic binding and structure synchronization. Controls can also be disabled during operations, when there are no export rows, or while the plugin is disabled.
Directory lists default to 20 rows per page, with 50 and 100 available. Search covers all snapshot rows, not only the page. If a background update changes the snapshot during export, refresh and export again.
Fixed Columns
| Column | Lists | Meaning |
|---|---|---|
| Row number | All | Position in the query results, not a provider ID |
| External name | All | Organization, department, or user name returned by the provider |
| External ID | All | Stable object identifier used by the plugin; distinct from a Soln UUID |
| Parent department | Departments | Provider parent name, or its ID when the snapshot has no name |
| Departments | Users | Provider assignments, potentially multiple; these do not assign the user to Soln departments |
| Binding status | All | Unbound, bound, or bound object unavailable, explained below |
| Soln organization / department / member | Corresponding list | Bound internal object; member email is included when available |
| Binding method | All | Manual or automatic matching. Bindings added through WeCom sign-in also appear as automatic |
| Binding status | Meaning and next step |
|---|---|
| Unbound | No internal relationship. Click Bind or set an automatic rule for this object type |
| Bound | A binding exists and the internal object is available. This does not prove profile synchronization, message delivery, or sign-in |
| Bound object unavailable | The relationship is retained but the internal object is unavailable, for example disabled or deleted. Review its state and adjust the mapping if needed; it is not an available notification recipient |
Dynamic Fields And Details
Provider attributes follow the fixed columns: email, employee number, avatar URL, activation status, or custom properties. Missing fields are not invented; an entire column or individual values can be absent. Check permissions, source profiles, visibility, and member consent.
Known provider fields have translated names, Boolean/status values, and formatted timestamps. Unknown custom fields retain their paths and values. Arrays and objects appear as structured text. Click View for the right-hand drawer to inspect long values. Empty values show -. The drawer is read-only, contains fixed and dynamic fields, and has no save or copy buttons.
An external activation flag does not mean the Soln member is enabled. An external administrator flag does not grant Soln administrator permissions.
Row Actions
| Action | Steps | Result |
|---|---|---|
| View | Inspect the ID, assignment, binding, and properties, then close the drawer | No changes |
| Bind | Review the read-only external name and ID, select a Soln object, and click Save Binding | Creates or changes the relationship; an existing target is preselected |
| Unbind | Available only for a bound row; review both objects in the confirmation dialog | Removes the relationship while retaining both objects and profiles |
Target selectors use the same organization, department, and member field controls as business forms. Bind organizations to organizations, departments to departments, and users to members. Binding alone does not move a member. A target already bound to another external object of the same type reports a conflict rather than being reassigned automatically.
After unbinding, a saved rule that still uniquely matches may recreate the relationship after the next successful fetch. With structure synchronization enabled, an unbound object may instead be created during a subsequent synchronization. Unbinding is not a permanent exclusion switch.
Automatic Binding Dialog
| Field or action | Behavior |
|---|---|
| External object field | Choose an actual snapshot field; options show the translated label and raw path, such as email |
| Soln object field | Choose the comparison field; options show the internal label and code, such as so_email |
| Exact comparison | Trims surrounding whitespace and compares case-sensitively |
| Case-insensitive comparison | Trims surrounding whitespace and ignores case, useful for email |
| Save Automatic Matching | Saves the rule and runs it immediately; the dialog stays open to show statistics |
| Close | Discards unsaved dialog changes |
| Header information icon | Explains background refresh, adding only missing bindings, and preserving existing relationships |
Counts cover all external snapshot objects of the current type, irrespective of list search or pagination. Internal candidates must be available and enabled.
| Count | Meaning |
|---|---|
| Total | External objects scanned |
| Newly bound | Relationships added during this run |
| Preserved | External objects with an existing binding, even when comparison fields changed |
| Empty | Unbound external objects with an empty or noncomparable source value |
| Unmatched | Nonempty source with no available internal candidate; empty internal fields or disabled objects can cause this |
| Conflicts | Duplicate external values, multiple internal candidates, or an internal candidate already bound elsewhere |
Duplicate comparison values on either side cannot be resolved automatically; correct the profiles or bind manually.
Example: in Users, select external email → internal so_email → case-insensitive matching. A unique Alice@example.com matches alice@example.com. Multiple internal objects sharing the comparison value are not resolved by choosing one arbitrarily. Name-based organization and department rules have the same duplicate-name limitation.
Structure Synchronization Dialog
This configures which external field writes to which internal field, rather than selecting organization or department objects again. It manages all three object types together.
| Control | Usage |
|---|---|
| Add Mapping | Adds a row. Select an external field on the left before an internal field of the same object type on the right |
| External source | Grouped by organizations, departments, and users; searchable. Recheck the target after changing the object type |
| Internal target | Shows labels and codes such as a department's name (so_name). Disabled until a source is selected; other types, nonwritable fields, and occupied targets are unavailable |
| Auto Map → By Name | Generates candidates by field label for review |
| Auto Map → By Code | Matches codes while handling the internal so_ prefix; ambiguous targets are skipped |
| Row delete icon | Removes a field mapping, without deleting an object or its identifier binding |
| External Department Deleted | Choose keep, disable, or delete; the information icon explains full-scope and dependency requirements |
| Save Mappings | Saves fields and the deletion policy while preserving the existing sync state. Initially disabled configurations remain disabled; already enabled configurations use the saved changes on subsequent runs |
| Enable Automatic Sync | Validates, saves the current rules, and enables synchronization. A separate save is unnecessary; another valid enabled source reports a conflict |
| Disable Automatic Sync | Disables using the saved configuration, without saving pending field or deletion-policy edits |
| Cancel / Close | Discards unsaved edits without changing the existing background sync state |
The latest synchronization result appears in the dialog. Expand View Sync Failures for object type, name, external ID, and error code, up to 100 failures. Pending activation counts imported members awaiting administrator activation. Deletion unconfirmed means the conditions for confirming missing external departments were not met. Correct required fields, email, parent bindings, or references and allow the next run to process them.
Incomplete mappings or duplicate internal targets of the same type cannot be saved. Only configured object types are synchronized, but their hierarchy and assignments still require parent bindings. Configuring member fields alone does not remove organization and department dependencies. See Structure Synchronization for policy details.
Message Push: Configuration List
Each row configures this provider plugin's forwarding for one business application. Approval configurations under DingTalk and Feishu are independent. Enabling one provider's permissions does not configure the others.
Columns, Filters, And Row Actions
| Control or column | Meaning |
|---|---|
+ beside the left Push Configuration menu | Select Push Configuration first, then click its adjacent add icon |
| Date range | Filters configuration creation time, unrestricted by default; editing an old row does not change its creation time |
| Search | Submit an application name/code or message template name/code |
| Refresh icon | Reloads settings and available applications/templates |
| Business application / App code | The business app producing messages and its stable code, rather than a provider App ID or AgentId |
| Status | This row's enabled/disabled switch, separate from plugin runtime status |
| Message templates | Allowed templates; empty selection displays All Messages |
| DingTalk AgentId | DingTalk only; must belong to the enterprise internal app identified by the plugin Client ID |
| Created / Updated | Configuration creation and latest save times |
| Edit | Changes template scope and DingTalk AgentId. The business application of an existing row cannot change |
| Enable / Disable | Switches forwarding directly in the row; the edit dialog has no enable switch |
| Delete | Confirms removal, stops queued delivery, and retains logs. Add the configuration again to restore it |
The list supports pagination without bulk enable/disable, bulk delete, or Excel download controls.
Create And Edit Dialogs
- Select a Business Application. Options are active apps with an enabled message-inbox source, excluding Message Center and Luna. Already configured applications cannot be selected again when creating
- Enter AgentId for DingTalk. Feishu and WeCom do not show this field; WeCom uses the installation configuration
- Search, select multiple, or clear Message Templates. Options are currently active built-in and custom templates supporting inbox delivery, with up to 100 selected templates
- Hover the information icons beside the application, AgentId, or dialog title for scope and provider requirements
- Save. A new configuration is disabled until you Enable its row; editing preserves its existing switch state
Empty selection allows all messages for that application, including custom messages without a template. Once templates are selected, only matching template messages qualify; a message without a template does not match. The setting controls future forwarding without backfilling old notifications.
The template selector lists available tenant templates rather than filtering them to the selected application. Select templates actually used by that app's messages. Selecting a template used by another app does not pull the other app's messages into this configuration.
Message Push: Logs
Find A Record
Logs default to the last seven days, filtered by creation time. Expand or clear the range for older records, then select an application and status and submit search. Filters combine; changes return to page one.
Search matches title, summary, Soln member ID, external user ID, topic, or error code, not a member's display name. Check IDs in the user binding details. Page sizes are 20, 50, or 100.
While open, the page reloads approximately every five seconds; the refresh icon reloads immediately. This differs from the approximately five-minute background directory refresh. Refreshing logs neither resends messages nor fetches the directory.
Columns
| Column | Meaning |
|---|---|
| Created | When the delivery record was created, rather than when the member read it |
| Title | Notification title |
| Application | Business application producing the message |
| Status | Pending, sending, accepted, retry, failed, skipped, or uncertain |
| Soln member ID | Recipient of the inbox reminder; investigate different recipients individually |
| Topic | Business topic identifier for diagnosis, not a template scope users must type manually |
| Attempts | Sending attempts for this record, not views by the member |
| Result | Status or error explanation. A record without an error still shows a status explanation such as acceptance |
| View | Opens the delivery details drawer |
One event can notify several members or providers. Inspect records for each recipient under the relevant plugin; one success does not establish success for the others.
Drawer And Retry
| Section | Fields and purpose |
|---|---|
| Basic information | Log ID, created/updated times, status, and attempts identify this delivery |
| Message | Business app/name/code, topic, inbox item ID, title, and summary identify the original reminder |
| Recipient | Soln member ID and external user ID; the latter may be - if not yet resolved |
| Result | Provider message/task ID, result explanation, and raw error code distinguish provider errors from local skips |
The top-right Retry appears only for failed or skipped records. It is enabled when the record is less than 24 hours old and the current app configuration is enabled and allows the message's template. Otherwise, hover the disabled button for its explanation. Retry queues another delivery; it does not promise immediate arrival or rerun the original approval/business operation. Uncertain records have no retry action here.
Missing Logs Versus Failed Logs
| Situation | Checks |
|---|---|
| New reminder has no log | Confirm it entered the correct application's message center, then check this plugin's app configuration, enable time, templates, and list filters. Messages outside configured forwarding scope may have no delivery record |
| Member unbound or unavailable | Inspect Organization Mapping → Users, binding state, external ID, enabled internal member, and current directory availability |
| Provider rejected | Inspect the raw error and follow provider setup checks for credentials, permissions, and visibility; for WeCom check the actual outbound IP |
| Accepted but not seen | Check the external recipient and app entry; accepted is not delivered/read, and DingTalk may still process an asynchronous task |
| Uncertain | Check actual provider messages or available sending results before creating another business event and duplicate notification |
Worked Example
To send approval reminders to one existing member:
- Grant directory and personal messaging permissions, then Fetch Directory from Soln's Users list
- Search the external email or ID, View the identity, then Bind an existing Soln member
- Confirm Bound. Structure synchronization is unnecessary for this use case
- Open Push Configuration, click its left-menu
+, select the application producing approval messages and the desired templates; enter AgentId for DingTalk - Save, Enable the row, and create a new approval reminder
- Open Message Logs, filter by application/time, search the recipient ID, inspect status/content/external recipient, and confirm the actual provider message
For hundreds of members, configure automatic member matching and review conflicts and blanks. WeCom can supplement bindings through authorized sign-in when directory email is restricted. Configure and enable structure sync only when external data should update internal objects.