Identity Broker Forum

Welcome to the community forum for Identity Broker.

Browse the knowledge base, ask questions directly to the product group, or leverage the community to get answers. Leave ideas for new features and vote for the features or bug fixes you want most.

0

Allow manual Import and Sync operations while all scheduled operations are suspended

Adrian Corston 3 years ago in UNIFYBroker/Plus updated by Matthew Davis (Technical Product Manager) 2 years ago 0

When the scheduler is disabled it's not possible to run Import or Sync operations.  During solution development, initial data load and remediation activities it is often necessary to perform manual import and sync operations in specific orders while all scheduled other activity is suspended.  To achieve this right now all connector and link schedules must be individually disabled, which can be time consuming for non-simple solutions, and comes with an increased risk of schedules being left disabled inadvertently.

Provide some way to suspended scheduled operations, while allowing manual operations to continue to work.

I suggest adding a "Manual Operations Only" flag (or similar) to the dashboard.

0
Not a bug

Outgoing pre-provisioning task is called for some joined users

In my customer's TEST environment they are seeing AD sAMAccountName being updated for existing users where the join criteria are met.  The only place where the sAMAccountName is set is in the outgoing pre-provisioning task, which should not be called for existing joined entities.

I have also seen a second confirmation that the task is being called for pre-existing users: the "AD Account Creation" notifications being repeatedly sent for a large number of entities every time a Baseline Sync is performed.  The only place where that notification is sent is in that same outgoing pre-provisioning task.

0
Fixed

Invalid link joins after adapter entity deletion leads to unjoinable locker

When an adapter entity is deleted any persistent joins remain and block subsequent joins to remediated data.

Steps to reproduce
1. Configure a Link with outbound provisioning and persistent joins configured
2. Import an adapter entity that is intended to join a locker entity, but which is missing its join criteria field value
3. The link will provision a "duplicate" record (thereby creating an internal "Join" for the newly provisioned adapter entity)
4. To clean up the duplicate, delete the SoT for the "duplicate" adapter record and update the "intended" record to have a correct join criteria field value
5. Attempt to join the locker to the newly corrected adapter entity - it fails and re-provisions the "duplicate" record again

0
Not a bug

Inexplicable 'Source entity shared a join target with another source entity'

Adrian Corston 3 years ago in UNIFYBroker/Plus updated by Matthew Davis (Technical Product Manager) 1 year ago 6

I am seeing this familiar error:

Image 6066

(Baseline synchronization failed with the message "Source entity '93fe60b9-05ba-4b92-b167-80738bdad66a' shares a join target with another source entity: '695411ab-e878-4ae2-9e39-f04267ac6767'. Cannot proceed with join.". See logs for more details.)

I can't see why this is the case - the join criteria is on source field 'EmployeeNumber' and those two source entities have different values:

93fe60b9-05ba-4b92-b167-80738bdad66a EmployeeNumber=145627
695411ab-e878-4ae2-9e39-f04267ac6767 EmployeeNumber=145158

Could you please look at the joins in the database and tell me what's going on internally to see if that sheds light on how this has happened?

The environment has been running for months now, untouched from an administrative perspective.

Because I can see 66 pending incoming updates on that link that aren't being processed it seems like this failure is either (a) blocking all subsequent mappings for that link, or (b) happening for 66 different joins.  The customer reported that their upstream changes are not flowing through to AD.

Answer

Not enough detail to properly investigate/replicate this issue. Happy to be reopened if the issue resurfaces

0

Flag to configure UNIFYBroker/Plus to delete adapter entities with incomplete joins

Adrian Corston 3 years ago in UNIFYBroker/Plus updated by Matthew Davis (Technical Product Manager) 2 years ago 0

If an adapter has an incomplete entity on a link (i.e. no matching locker entity for the join criteria) then currently UNIFYBroker reports a warning.  In many circumstances it would be appropriate to delete the adapter entity in this situation, to ensure the external data source was kept in sync with the locker.  Add a configuration flag to enable this functionality.

0
Planned

Baseline Sync calling connector entity update for all entities even when there are no value changes

Adrian Corston 3 years ago in UNIFYBroker/Plus updated by Shane Day (Chief Technology Officer) 1 month ago 3

When a Baseline Sync runs on a link the connector's update export functionality is called to update every entity, even when there are no field value changes.  This places an unnecessary load on UNIFYBroker and performs null updates against the external system for no discernible reason, and since UNIFYBroker/Plus is unable to sync any other links while this takes place can result in unnecessary processing delays while the connector is busy effectively doing nothing.

0
Answered

Duplicated join target for NULL field value where there is no target with that field value

Adrian Corston 3 years ago in UNIFYBroker/Plus updated 3 years ago 6

I am seeing: Baseline synchronization failed with the message "Source entity 'b5d56da5-a8af-4088-b98c-4b78a693b093' shares a join target with another source entity: 'fa457ecd-b5a7-4708-886b-747ca82da40a'. Cannot proceed with join.". See logs for more details.

Both source entity have a join field value of NULL, and there are no target entities with a join field value of NULL.

I tried deleting entities and reloading them, but the error remains. The mapping of field values through to other locker entities is not happening, and I would like to know if the join failure is the cause of this.

Answer

Hi Adrian

As the error message says, both of those source entities have the same join target, which may or may not exist until provisioning occurs. If the schema fields you're using can contain nulls and you want the sync to progress I'd recommend adding a Has Value filter on the join fields.

0
Not a bug

Connection-aware join not persisting for outgoing link when join criteria field value changes - new adapter entity is created and old one is left behind

Image 5970

Image 5971

When a locker's Cloud Group Name field is updated this configuration causes the creation of a new adapter/connector entity.  The old adapter/connector entity is retained.  After the 

The functionality is needed to allow solutions to have changes to entity key/join fields flow through to downstream systems.

0
Not a bug

Bidirectional mapping data not flowing from Locker to Adapter

Adrian Corston 3 years ago in UNIFYBroker/Plus updated 2 years ago 3

In a UNIFYConnect environment I have configured a Bidirectional mapping.  For my locker entities there is a value in the field, and in the adapter entity the field is empty.  When I run a Baseline Sync the values are not being copied to the adapter entities.

Locker:

Image 5955

Image 5956

Adapter:

Image 5957

There are no errors in the UNIFYBroker log file.

Answer

Closed due to no response. Feel free to re-open if you have any further information to share or the issue resurfaces.

0
Fixed

Record with a duplicate key in the CSV file backing a CSV connector created when a link has outgoing join criteria fields not in the connector's key and only non-key field values are changing

When a locker entity is updated with changes to a link's outgoing join criteria field values but no change to any fields part of the underlying CSV connector's key then a duplicate record is written to the CSV file (which causes subsequent imports to fail).

This bug was previously reported in https://voice.unifysolutions.net/en/communities/6/topics/4209-locker-entity-not-deprovisioned-when-adapter-entity-join-field-values-change# but that ticket covers a number of different problems experienced and so this simple ticket is being created for improved clarity.

Notes
This bug has only been confirmed for the CSV connector at this time.

No error is logged during the outgoing changes sync:

20210208,02:46:18,UNIFYBroker,SyncEngine,Information,"Request to sync locker to adapter started.
Synchronization job started syncing 1 changes on the 'out' link from the locker to adapter. Job ID: 2c5fdfa5-ae77-4bb8-b109-10ca7b2810ff",Normal
20210208,02:46:18,UNIFYBroker,Adapter,Information,"Adapter request to add entities for adapter space.
Adapter request to add entities [Count:1] for adapter out (054763ed-db86-4092-bbd9-02b3b8e9736e).",Normal
20210208,02:46:18,UNIFYBroker,Connector,Information,"Request to add entities to connector.
Request to add entities [Count:1] to connector out.",Normal
20210208,02:46:18,UNIFYBroker,Connector,Information,"Add entities to connector completed.
Add entities [Count:1] to connector out reported 1 entities saved, 0 failed. Duration: 00:00:00.1622925",Normal
20210208,02:46:18,UNIFYBroker,Adapter,Information,"Adapter added entities to adapter space.
Adapter added [Count:1] entities (1 successful) to adapter out (054763ed-db86-4092-bbd9-02b3b8e9736e). Duration: 00:00:00.1622925",Normal
20210208,02:46:18,UNIFYBroker,Connector,Information,"Request to update entity to connector.
Request to update entities [Count:0] to connector out.",Normal
20210208,02:46:19,UNIFYBroker,Connector,Information,"Update entities to connector completed.
Update entities 0 to connector out reported 0 entities saved, 0 failed. Duration: 00:00:00.1199350",Normal
20210208,02:46:19,UNIFYBroker,SyncEngine,Information,"Request to sync locker to adapter completed.
Synchronization job completed syncing 1 changes on the 'out' link from the locker to adapter. Delayed: 0 Incomplete: 0 Denied: 0 Job ID: 2c5fdfa5-ae77-4bb8-b109-10ca7b2810ff Duration: 00:00:00.4020608",Normal
20210208,02:46:23,UNIFYBroker,Change detection engine,Information,"Change detection engine unscheduled started.
Change detection engine unscheduled for connector out started.",Normal
20210208,02:46:23,UNIFYBroker,Change detection engine,Information,"Change detection engine unscheduled completed.
Change detection engine unscheduled for connector out completed. Duration: 00:00:00.0219985",Normal
20210208,02:46:27,UNIFYBroker,Change detection engine,Information,"Started processing changes register items.
Started processing changes register items for connector out.",Normal
20210208,02:46:27,UNIFYBroker,Change detection engine,Information,"Changes register item processing completed.
Changes register item processing on connector out completed. Duration: 00:00:00.0950008",Normal
20210208,02:46:31,UNIFYBroker,Adapter,Information,"Request to reflect change entities of the adapter.
Request to reflect change entities of the out (054763ed-db86-4092-bbd9-02b3b8e9736e) adapter completed with 0 adds, 0 updates and 0 deletes across 1 pages. Duration: 00:00:00.0500007",Normal

No error is logged for the confirming incoming changes sync prior to the connector import operation:

20210208,02:51:19,UNIFYBroker,SyncEngine,Information,"Request to sync adapter to locker started.
Synchronization job started syncing 1 changes on the 'out' link from the adapter to locker. Job ID: 828030c1-7dda-4b15-9572-f8a99b31e463",Normal
20210208,02:51:19,UNIFYBroker,SyncEngine,Information,"Request to sync adapter to locker completed.
Synchronization job completed syncing 1 changes on the 'out' link from the adapter to locker. Delayed: 0 Incomplete: 0 Denied: 0 Job ID: 828030c1-7dda-4b15-9572-f8a99b31e463 Duration: 00:00:00.1417907",Normal

The subsequent connector import error is:

20210208,02:53:19,UNIFYBroker,Change detection engine,Information,"Change detection engine import all items started.
Change detection engine import all items for connector out started.",Normal
20210208,02:53:19,UNIFYBroker,Connector,Information,"Request to import all entities from connector.
Request to import all entities from connector out.",Normal
20210208,02:53:19,UNIFYBroker,Connector,Information,"Import all entities from connector completed.
Import all entities from connector out return 2 entities. Duration: 00:00:00",Normal
20210208,02:53:19,UNIFYBroker,Connector Processor,Information,"Connector Processing started.
Connector Processing started for connector out (page 1)",Normal
20210208,02:53:19,UNIFYBroker,Connector Processor,Information,"Connector processing failed.
Connector Processing page 1 for connector out failed with reason The key 1 has been duplicated.. Duration: 00:00:00.3093309.
Error details:
System.ArgumentException: The key 1 has been duplicated.
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.DuplicateKeyBase(MultiKeyValue`1 arg1)
at Unify.Framework.Collections.EnumerableExtensions.ToDictionaryWithKeyClashError[TKey,TValue,TOriginal](IEnumerable`1 originalEnumerable, Func`2 keySelector, Func`2 valueSelector, Action`3 duplicateAction)
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, Func`2 retrieveEntities, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, IKnownEntityContextBase`3 context, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetectionOnConnectorEntityPage(IEnumerable`1 connectorEntities, Int32& index, Int32 entitiesProcessedSoFar, IEntityChangesReportGenerator`2 reportGenerator, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.<>c__DisplayClass11_1.b__0(IEnumerable`1 page)
at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.ThreadsafeItemEvaluator.Evaluate()",Normal
20210208,02:53:19,UNIFYBroker,Change detection engine,Error,"Change detection engine import all items failed.
Change detection engine import all items for connector out failed with reason An error occurred while evaluating a task on a worker thread. See the inner exception details for information.. Duration: 00:00:00.3583489
Error details:
Unify.Framework.EvaluatorVisitorException: An error occurred while evaluating a task on a worker thread. See the inner exception details for information. ---> System.ArgumentException: The key 1 has been duplicated.
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.DuplicateKeyBase(MultiKeyValue`1 arg1)
at Unify.Framework.Collections.EnumerableExtensions.ToDictionaryWithKeyClashError[TKey,TValue,TOriginal](IEnumerable`1 originalEnumerable, Func`2 keySelector, Func`2 valueSelector, Action`3 duplicateAction)
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, Func`2 retrieveEntities, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, IKnownEntityContextBase`3 context, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetectionOnConnectorEntityPage(IEnumerable`1 connectorEntities, Int32& index, Int32 entitiesProcessedSoFar, IEntityChangesReportGenerator`2 reportGenerator, IHashSet`1 seenKeys)
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.<>c__DisplayClass11_1.b__0(IEnumerable`1 page)
at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.ThreadsafeItemEvaluator.Evaluate()
--- End of inner exception stack trace ---
at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.CheckForException()
at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.WaitForCompletedThreads()
at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.Visit()
at Unify.Framework.Visitor.VisitEvaluateOnThreadPool[T](IEnumerable`1 visitCollection, Action`2 visitor, Int32 maxThreads)
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetection(IEnumerable`1 connectorEntities)
at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.ImportAllChangeProcess()
at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.RunBase()
at Unify.Framework.DefinedScopeJobAuditTrailJobDecorator.Run()
at Unify.Product.IdentityBroker.ConnectorJobExecutor.<>c__DisplayClass30_0.b__0()
at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state)",Normal