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.
Add the ability for the FTP agent to connect to SFTP servers. Also update the CSV connector if required to be able to use the updates to the connector.
CSV Connector using FTP agent currently doesn't support write/export operation but only import. Understood, it is a bit more complicated than updating a local file but can we look to see what we can do or suggest a workaround to cater write operation.
Some HR Systems like "PayGlobal" currently doesn't have a Web Service interface and the only option for integration is CSV/file extracts. Systems like PayGlobal is also remotely hosted on the Vendors Cloud environment and does require remote file transfer.
The CSV connector is exhibiting some strange behaviour when exporting. See below a file that was written to. Telephone is a multivalue string field in the connector schema - the rest are strings.
Telephone and email have seemingly switched value types. I am assuming this is why the string value array writing has appeared.
CSV Export User.png
Exports to the CSV Connector are failing with the following:
Save entities [Count:1] to connector CSV Connector 2 failed with reason The process cannot access the file 'C:\Shared\Identity Broker 4\CSV Test\Talent2 Person Connector5.csv' because it is being used by another process.. Duration: 00:00:00 Error details: System.IO.IOException: The process cannot access the file 'C:\Shared\Identity Broker 4\CSV Test\Talent2 Person Connector5.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) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.StreamWriter.CreateFile(String path, Boolean append) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding) at System.IO.File.AppendAllLines(String path, IEnumerable`1 contents) at Unify.Product.IdentityBroker.CsvConnector.AddEntities(IEnumerable`1 entities) at Unify.Product.IdentityBroker.ConnectorToWritingConnectorBridge.AddEntities(IEnumerable`1 entities) at Unify.Product.IdentityBroker.EventNotifierWritingConnectorDecorator.AddEntities(IEnumerable`1 entities) at Unify.Product.IdentityBroker.Adapter.AddEntities(IEnumerable`1 entities, Boolean reflect) at Unify.Product.IdentityBroker.Adapter.AddEntity(IAdapterEntity entity) at Unify.Product.IdentityBroker.AdapterNotifierDecoratorBase`1.AddEntity(IAdapterEntity entity) at Unify.Product.IdentityBroker.LDIFAdapterBase.ExportChanges(ExportedLDIFForAdapter exportedLdifForAdapter) at Unify.Product.IdentityBroker.LDIFAdapterServiceHostDecoratorBase.ExportChanges(ExportedLDIFForAdapter exportedLdifForAdapter) at SyncInvokeExportChanges(Object , Object , Object ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object inputs, Object& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
There were a series of improvements made to the CSV connector that will need to be re-evaluated and completely regression tested. These changes were made in attempts to remove the likelihood of locks on a file being breached on the same thread by reducing the number of reads/writes to the file.
- Preventing the collection of IConnectorEntities being completely evaluated before being written back.
- Reducing the reads on the same file to 1 instead of 3 on Add entities.
A CSV connector configured to import a binary value fails with:
Change detection engine import all items for connector CSV Connector Example failed with reason Line 1 column 1 value of 010011010110000101101110 is not valid. Duration: 00:00:00.1406250
This was tried with a byte value, byte array value, binary value and base64 encoded string; all resulting with a message similar to the one provided above.
- Either the validator should be updated to handle string values
- Or an intermediate step is included where the CSV connector tries to parse the values retrieved based on the field ValueType, before creating with the Validator
- Otherwise, a more descriptive exception should be provided denoting that this connector doesn't support that value type.
The field "Telphone" is multivalue, and the following line is being imported:
However, the Telephone value is still being sent to FIM as a single valued field:
Name: Matthew Clark
The current message thrown when the target CSV file is empty is the following:
Save entities to connector failed. Save entities [Count:40] to connector Test CSV - C:\log\AurionGeneric.csv failed with reason Non-negative number required. Parameter name: value. Duration: 00:00:00.0040002 Error details: System.ArgumentOutOfRangeException: Non-negative number required. Parameter name: value at System.IO.FileStream.set_Position(Int64 value) at Unify.Product.IdentityBroker.CsvConnector.<>c__DisplayClass2a.<AddEntities>b__28(Stream old, Stream new) at Unify.Product.IdentityBroker.FileStreamCommunicator.Shift(UpdateFile fileUpdate) at Unify.Product.IdentityBroker.CsvConnector.AddEntities(IEnumerable`1 entities) at Unify.Product.IdentityBroker.EventNotifierAddingConnectorDecorator.AddEntities(IEnumerable`1 entities) at Unify.TestHarness.Connector.ConnectorTestHarness.<>c__DisplayClass6.<Add>b__5(IEntitySchema schema, IEnumerable`1 entities) at Unify.TestHarness.Connector.ConnectorTestHarness.Shift(Guid sourceId, Action`2 entityHandler) at Unify.TestHarness.Connector.ConnectorTestHarness.Add(Guid sourceId, Guid targetId) at Unify.TestHarness.Connector.ConnectorTestHarnessServiceController.Add(StandardPostData postData)
Instead, the schema field names should be written as the header, with an informational event logged stating that the file was updated with the correct heading.
When specifying the schema for a CSV file, you cannot change what is the required / readonly fields to generate keys. The CSV file format is not always controllable as it can be system produced. Can you please allow the modification of the schema settings.
Incorrec time error.jpg
There are some display issues with the CSV connector.
- Some label names are still garbled
- Some FTP settings display regardless of the type of communicator (File and FTP)
- A validation message does not display if the file path is cleared
- There is a ")" character after "Ignore Certificate Errors"
Customer support service by UserEcho