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.

Button to run a Scheduled Job
I'd like a button for each Scheduled Job that manually runs it when clicked.

This has been implemented and is available in the release of UNIFYConnect V6, which will be made available shortly.

Unicode support in the CSV connector
I have Unicode data in a locker field, sourced from a PowerShell connector, which looks file in the UNIFYBroker UI:
However when I export it to a CSV connector, the non-latin1 character doesn't appear to be correct:
(viewed using Notepad++)
Does the CSV connector support Unicode characters?

UNIFYBroker API cannot access the log file because it is being used by another process
In UNIFYConnect when attempting to retrieve a log file via the API it usually works fine but once I saw this error. This is a very low priority issue for me.
20221214,20:00:16,UNIFYBroker,SyncEngine,Information,"Request to baseline synchronize link completed.
Request to queue a baseline synchronization job for the 'Employee > AD User' link completed. Duration: 00:00:12.2592180",Normal
20221214,20:00:19,UNIFYBroker,Logging engine,Warning,"Request to download log file.
Request to download log file for 12/14/2022 failed with message The process cannot access the file 'C:\app\Services\Logs\UnifyLog20221214.csv' because it is being used by another process.. Duration: 00:00:00.1899900
Error details:
System.IO.IOException: The process cannot access the file 'C:\app\Services\Logs\UnifyLog20221214.csv' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Unify.Framework.Logging.CsvLogReaderWriter.DownloadLogFile(DateTime date)
at Unify.Framework.Logging.LoggingEngine`1.DownloadLogFile(DateTime date)
at Unify.Framework.Notification.NotifierDecoratorBase.Notify[TResult](ITaskNotificationFactory notificationFactory, Func`1 function)
at Unify.Framework.Logging.LoggingEngineNotifierDecorator.DownloadLogFile(DateTime date)
at Unify.Framework.Logging.LoggingController.DownloadLogFile(Int32 year, Int32 month, Int32 day)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()",Normal

Just found a second occurrence; it may be happening when two or more log retrieval API calls are invoked simultaneously. I have updated my implementation to not do that.

Entity Id search doesn't work
When I put an Entity Id into the search field on the Entity Search screen, UNIFYBroker doesn't search for the entity.
This is particularly problematical when searching by ID for one entity in a large partition, since the only way to find it is to order by Entity Id and browse result pages one by one, matching Entity Ids visually until the required entity is found. Even after selecting "Show 100 entries" for a customer with a large number of entities this takes many minutes and dozens of click-wait-for-page-load-look-and-scroll cycles. Sometimes this process needs to be repeated for many Entity Ids and it becomes frustrating and wastes time.

Entity Search filter OR option
When multiple filters are applied on an entity search the operator applied is by default an AND. A checkbox option(s) similar to say the MIM Portal entity search filtering options would be ideal, but at a minimum the ability to OR filters would be handy to assist test scenarios and troubleshooting.

AD outbound link ends up with join errors to non-existent adapter entities during normal operation
Following successful initial data load and a number of normal HRIS/AD connector import cycles an outbound link to AD has somehow ended up with a join to a non-existent adapter entity (in the case above, eeb1ac7e-fda0-4f64-a509-2af2a88ac22f).
Could this be 4306 Non-existant adapter joins when outgoing baseline syncs fail back to haunt me again? :(

Join transformation resulting in high resource consumption
Priority: Critical
Impact: Use of transformation renders whole UNIFYConnect environment unusable
A join transformation on a single valued field is causing high CPU, Memory and Database resource consumption.
Source adapter has 7000 entities. Connector being joined to has 7100 entities.
May be of interest: The field being joined to in the connector has some values as "empty" rather than null.

This has been implemented and is available in the release of UNIFYConnect V6, which will be made available shortly.

Duplicate changes registered for the same entity in the adapter
Priority: Low/Medium
Impact: Higher than necessary UNIFYConnect resource consumption
With a connector and adapter configured in UNIFYBroker, and the adapter has multiple transformations registered (such as joins and future dated changes), a change appears to be registered in the change table for each combination of entity + transformation.
This can result in 8-10 changes being registered for the same entity. While this isn't impactful from a change perspective (the latter computations of changes result in no actual changes being made to the adapter entity), a connector import of 7000 entities is resulting in upwards of 60,000 changes being registered which results in unnecessary delays of processing and computation on the database.

Sometimes Changes Sync doesn't run when there are pending changes
In UNIFYConnect very occasionally Change Sync won't run (either from a schedule or when invoked manually from the UI) when there are pending changes on the link. Service restart doesn't help, but running a Baseline Sync does. I have no idea what causes it to get into this state I'm afraid.

Changes register item processing on connector failed with reason Cannot process a DateTime of type 'Unspecified'
The error Changes register item processing on connector TechOne Person failed with reason Cannot process a DateTime of type 'Unspecified' is logged for an adapter which has a join to another connector with a Timestamp field that was populated by PowerShell when that adapter's base connector imports a new or updated entity, even when that Timestamp field has DateTime kind 'Utc' or 'Local'.
My config has two PowerShell connectors, TechOne Person and TechOne Position. The Position connector has two fields StartTimestampUTC and EndTimestampUTC which are set to valid DateTime values, of kind 'Utc'. There is one adapter, TechOne Person, for which the Person connector is a base, and the Position connector is a Join transform with StartTimestampUTC and EndTimestampUTC fields both mapped into adapter fields.
When a new record is present in the Person connector import, reflection causes the above error message to be logged, but the adapter record is created correctly nevertheless. When a subsequent Generate Changes is run on the adapter, the error is not logged. If the record is reimported with updated values, the error is logged.
Customer support service by UserEcho