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.
Data Transformation on fetching previous position end date
Hi,
I am trying to do a data transformation in Chris 21 person Adapter in IdB 4.1
Connector: Ch21 Placement connector
join criteria: detnumber
What I want to achieve:
select top 1 posenddate from all positions held(sort on desc) where end date is NOT null(which will be current position, so we don't want that)
is there a way to do this OOTB in IdB 4.1?
The current set of join transformation options will all pick the open transformation, with the only way to select the previous being to change the offset of the window - which is not quite what you're after. In v5.1 you would be able to write the logic yourself using the PowerShell transformation. I believe your options are:
- Use your solution logic to do the selection;
- Update to v5.1 and use the PowerShell transformation;
- Write an extended transformation using code (not recommended as it's not trivial).
Chris21 Connector updating source attributes, that are not configured
@HSF, We migrated IdB4.0 to 4.1 and we have configured in FIM to flow email address to update back in chris21. And during testing chris21 tech team found that IdB is updating attributes like surname, dob etc in addition to email address. I checked all connector and adapter configuration, there is no flow to the above attributes. in FIM there is just one export flow from MV to chris21 person, email address. I can send the adapter and connector config, but couldnt find a way to add them here.
Error on import from chris21
I'm getting the following error on import from Identity Broker for chris21 v4.1.
Change detection engine import all items failed.Change detection engine import all items for connector Chris21 Person Connector failed with reason An error occurred while evaluating a task on a worker thread. See the inner exception details for information.. Duration: 00:00:51.0016320 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: An item with the same key has already been added. at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector) at Unify.Product.IdentityBroker.PageableEntityChangesReportGenerator`2.ToDistinctChangesEnumerable(IEnumerable`1 entitiesWithKey, IHashSet`1& knownEntityKeys) at Unify.Product.IdentityBroker.PageableEntityChangesReportGenerator`2.CreateDifferencesReport(IEnumerable`1 knownEntities, IEnumerable`1 newEntities) 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__DisplayClass12_0.<PerformChangeDetection>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.WaitForAvailableThread() at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.Visit() 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__DisplayClass27_0.<Run>b__0() at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state)
Changes register item processing on connector Chris21 Work Address Connector failed with reason The column adrline1 is not a pre-existing column in adapter Chris21 Person
The Connector import complete but we receive the error in the logs, do we need to bring the adrline1 column into the adapter by itself as well?
Changes register item processing on failed.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Unify.Product.IdentityBroker.ChangeReportProcessor.ProcessReport(IChangeReportProcessingRequest request)
Hi André,
Did you check for existing instance of this issue? Please follow the resolution from http://voice.unifysolutions.net/topics/2675-unifyproductidentitybrokeradaptercolumnexception-the-column-erhrstrcdtrn-is-not-a-pre-existing/ (either discontinue use of v4.0.x, or install the available patch).
An FYI, a notice will be going out shortly about End of Product Life, so support for v4.0 will be ending (as per https://unifysolutions.jira.com/wiki/display/IDB/End+of+Product+Life+Policy).
Thanks.
Unify.Product.IdentityBroker.AdapterColumnException: The column erhrstrcd.trn is not a pre-existing column in adapter
Have migrated the IdB 4.0 configuration to a new test environment and almost for all the Connector Import All I receive a similar error, event though the connector import complete. I have check the configuration and the attribute is available in the connector and there is a transformation for the attribute in the adapter.
20161030,22:18:42,UNIFY Identity Broker,Change detection engine,Error,"Changes register item processing on failed.Changes register item processing on connector Chris21 Roster Connector failed with reason The column erhrstrcd.trn is not a pre-existing column in adapter Chris21 Person (ba1a8cf9-e7af-42dd-b53f-34c0ca938221). Please check your configuration before continuing. Currently known fields: detnumber, dettitle, detsurname, detdatejnd, detg1name1, detg1name2, detg1name3, detprefnm, detpresurn, dettele, detbirdate, detsex, detcntrynm, detcitcd, detmarcd, detmardate, detemailad, detaltnbr, detabn, detbutton, detpaytype, detterdate, detalttele, detpasssur, detglbexp, terdate, terlstduty, terminated, archivedate, forarchive, lvetypecd, lvestart, lveend, posstart, posend, posholzone, posavhrwk, posalttitl, posstatus, posempocc, possupervis, poscostgrp, poslvegrp, pospdtreas, pospdtel, posdayswk, posl1cd, posl2cd, posl3cd, posl4cd, posl5cd, posindustry, posl1cdtrn, posl2cdtrn, posl3cdtrn, posl4cdtrn, posl5cdtrn, managerref, nextposstart, nextposend, nextposholzone, nextposavhrwk, nextposalttitl, nextposstatus, nextposempocc, nextpossupervis, nextposcostgrp, nextposlvegrp, nextpospdtreas, nextpospdtel, nextposdayswk, nextposl1cd, nextposl2cd, nextposl3cd, nextposl4cd, nextposl5cd, nextposl1cdtrn, nextposl2cdtrn, nextposl3cdtrn, nextposl4cdtrn, nextposl5cdtrn, nextposindustry, workadrline1, homeadrcntsur, homeadrcntname, homeadrcntrel, homeadrcntphon, homeadrline1, homeadrline2, homeadrsuburb, homeadrstate, homeadrcountry, homeadrpstcode, zsmcompany, zsmstartdt, zsmenddate, zsmexplnth, zsmchgrate, zsmreptnam, zsmscdmthr, zsmincity, erhstartdt, erhenddate, erhrstrcd, erhrstrcdtrn, erhoffsetd, erhreason, erhrwpdate, zadadmdate, zadexpdate, zadpromsa, zadovsad, zadgraddat, zadmerce2, zadpartner, zadexeccou, zadspeccou, zadjuricrt, zadovscrt, zadpraccrt, zadfedreg, zadcerttyp, zadsupres, zadmemnum, zadovschek, zadjurifrs, zadjursact, zadjursnsw, zadjursnt, zadjursqld, zadjurssa, zadjurstas, zadjursvic, zadjurswa, zadjursoth, zadadmaus, holidayGroup, OfficeCode, timeEntryCode, expertPersonnelTypeCode, ProfitCentreCode, ProfitCentreDescription, DeptCode, DeptDesc, PracticeGroup. Duration: 00:00:22.7662764 Error details: Unify.Product.IdentityBroker.AdapterColumnException: The column erhrstrcd.trn is not a pre-existing column in adapter Chris21 Person (ba1a8cf9-e7af-42dd-b53f-34c0ca938221). Please check your configuration before continuing. Currently known fields: detnumber, dettitle, detsurname, detdatejnd, detg1name1, detg1name2, detg1name3, detprefnm, detpresurn, dettele, detbirdate, detsex, detcntrynm, detcitcd, detmarcd, detmardate, detemailad, detaltnbr, detabn, detbutton, detpaytype, detterdate, detalttele, detpasssur, detglbexp, terdate, terlstduty, terminated, archivedate, forarchive, lvetypecd, lvestart, lveend, posstart, posend, posholzone, posavhrwk, posalttitl, posstatus, posempocc, possupervis, poscostgrp, poslvegrp, pospdtreas, pospdtel, posdayswk, posl1cd, posl2cd, posl3cd, posl4cd, posl5cd, posindustry, posl1cdtrn, posl2cdtrn, posl3cdtrn, posl4cdtrn, posl5cdtrn, managerref, nextposstart, nextposend, nextposholzone, nextposavhrwk, nextposalttitl, nextposstatus, nextposempocc, nextpossupervis, nextposcostgrp, nextposlvegrp, nextpospdtreas, nextpospdtel, nextposdayswk, nextposl1cd, nextposl2cd, nextposl3cd, nextposl4cd, nextposl5cd, nextposl1cdtrn, nextposl2cdtrn, nextposl3cdtrn, nextposl4cdtrn, nextposl5cdtrn, nextposindustry, workadrline1, homeadrcntsur, homeadrcntname, homeadrcntrel, homeadrcntphon, homeadrline1, homeadrline2, homeadrsuburb, homeadrstate, homeadrcountry, homeadrpstcode, zsmcompany, zsmstartdt, zsmenddate, zsmexplnth, zsmchgrate, zsmreptnam, zsmscdmthr, zsmincity, erhstartdt, erhenddate, erhrstrcd, erhrstrcdtrn, erhoffsetd, erhreason, erhrwpdate, zadadmdate, zadexpdate, zadpromsa, zadovsad, zadgraddat, zadmerce2, zadpartner, zadexeccou, zadspeccou, zadjuricrt, zadovscrt, zadpraccrt, zadfedreg, zadcerttyp, zadsupres, zadmemnum, zadovschek, zadjurifrs, zadjursact, zadjursnsw, zadjursnt, zadjursqld, zadjurssa, zadjurstas, zadjursvic, zadjurswa, zadjursoth, zadadmaus, holidayGroup, OfficeCode, timeEntryCode, expertPersonnelTypeCode, ProfitCentreCode, ProfitCentreDescription, DeptCode, DeptDesc, PracticeGroup ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Unify.Product.IdentityBroker.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column) --- End of inner exception stack trace --- at Unify.Product.IdentityBroker.AdapterColumnSources.get_Item(GroupedNameValueCollectionKey column) at Unify.Product.IdentityBroker.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase`1.<>c__DisplayClass25.<CalculatePossibleAffectedItems>b__11(IAttributeMappingInformation item) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Product.IdentityBroker.AttributeMapper.MapAttributeValues(IEntity leftSideEntity, IEntity rightSideEntity) at Unify.Product.IdentityBroker.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase`1.<>c__DisplayClass27.<CalculatePossibleAffectedItems>b__19(<>f__AnonymousTypea`2 <>h__TransparentIdentifierb) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Unify.Product.IdentityBroker.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase`1.CalculatePossibleAffectedItems(IEnumerable`1 affectedEntities, IAdapterColumnSources columnSources) at Unify.Product.IdentityBroker.EntityDistinguishedNameRelationMapperValueAdapterFactoryBase`1.DetermineChangeTimes(IChangeDetectionTimeChangeReport report, DateTime lowerLimit, DateTime upperLimit, IAdapterColumnSources columnSources) at Unify.Product.IdentityBroker.ChainedTransformationChangeProcessor.PublishChange(IEnumerable`1 changedEntities, DateTime changeProcessTime, ICollection`1 changeRecords) at Unify.Product.IdentityBroker.ChainedTransformationChangeProcessor.ProcessChangeReport(IDictionaryTwoPassDifferenceReport`4 changesReport, DateTime changeProcessTime) at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor) at Unify.Product.IdentityBroker.ChangeReportProcessor.CreateAndProcessReport[T](ITransformationChangeProcessor[] adapterTransformationProcessors, IEnumerable`1 sourceEnumerable, DateTime changeTime, HashSet`1 invalidEntities, Action`2 addAction, Func`3 addCheck) at Unify.Product.IdentityBroker.ChangeReportProcessor.ProcessReport(IChangeReportProcessingRequest request)",Normal
I'm not sure when the fix was included in Identity Broker, but it doesn't appear to be an issue any longer. Either update to a later version (e.g. v4.1.x) or try the patch (I'll add another comment with the details).
connector Chris21 Person Connector failed with reason The remote server returned an error: (405) Method Not Allowed
A new instance has been configured for HSF for all the systems. The person connector is configured as
When I try and do an Import All I receive the following issue:
20160909,00:40:13,UNIFY Identity Broker,Change detection engine,Error,"Change detection engine import all items failed.Change detection engine import all items for connector Chris21 Person Connector failed with reason The remote server returned an error: (405) Method Not Allowed.. Duration: 00:00:00.0150015 Error details: System.Net.WebException: The remote server returned an error: (405) Method Not Allowed. at System.Net.HttpWebRequest.GetResponse() at Unify.Framework.Communicator.HttpCommunicatorBase`1.PostRequest(String requestString) at Unify.Product.IdentityBroker.Chris21CommunicatorBase`1.List(IEnumerable`1 keyColumnNames) at Unify.Product.IdentityBroker.Chris21ConnectorBase`1.GetAllEntities(IStoredValueCollection storedValueState) at Unify.Product.IdentityBroker.ConnectorToReadingConnectorBridge.GetAllEntities(IStoredValueCollection storedValueState) at Unify.Product.IdentityBroker.EventNotifierReadingConnectorDecoratorBase`1.GetAllEntities(IStoredValueCollection storedValues) at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.ImportAllChangeProcess() at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.RunBase() at Unify.Framework.DefinedScopeJobAuditTrailJobDecorator.Run() at Unify.Product.IdentityBroker.QueuedConnectorExecutionProcessorEndDecorator.Run()",Normal
Hi Andre
Check your URI for that connector. You're using post21.htm which is the test site. Should be c21connect.asp.
How do you create gtrListFilters in IdB4.0?
I need to know how to implement gtrListFilters in IdB4.0.
The doco for the filters is documented here:
https://unifysolutions.jira.com/wiki/display/IDBCHRS305/Frontier+chris21+connector#Frontierchris21connector-GTRfilterformat
Below is one of the filters I need to implement. I can't see anywhere in the GUI this can be implemented.
<connectorconfiguration configuration="readingAndWritingConnector"> <connector connector="Unify.Connectors.Chris21.GTR" id="{BB362CE2-985C-486d-9D53-8A5C4909B938}" name="Chris21 Placement Connector" key="detnumber"> <entitySchema> <field name="detnumber" validator="string" readonly="True" required="True" key="True" /> <field name="posstart" validator="date" readonly="True" required="True" key="True" /> <field name="posend" validator="date" readonly="True" /> <field name="posnumber" validator="string" readonly="True" /> <field name="posstatus" validator="string" readonly="True" /> <field name="posempocc" validator="string" readonly="True" /> </entitySchema> <entitySchemaValidators> <validator name="string" validatorGenerator="Unify.Framework.EntityStringValidatorFactory,Unify.Framework.Entity.Schema" /> <validator name="date" validatorGenerator="Unify.Framework.EntityDateValidatorFactory,Unify.Framework.Entity.Schema" /> </entitySchemaValidators> <image>iVBO<snip> VORK5CYII=</image> <communicator logActive="True" type="http" gtrForm="pos" gtrName="broker1prod" gtrSecurePassword="9Wu6XRqV4pgisJmPm4WO3Q==" gtrPassword="" skipLogout="False" gtrAllowHttp="True" gtrShowTranslations="False" gtrListRequest="Default" gtrChunkSize="1000" httpUri="https://hrselfservice/Web/Scalable/c21connect.asp" encoding="UTF-8" contentType="application/x-www-form-urlencoded"> <gtrListFilters> <gtrListFilter filterValue="posend:GE:{DATETODAY}:or" /> <gtrListFilter filterValue="posend:EQ::" /> </gtrListFilters> </communicator> </connector> <getAllEntities> <timing name="RecurringTimespan"> <timespan value="864000000000" /> </timing> </getAllEntities> </connectorconfiguration>
Filter records retrieved from chris21
The IDB chris21 connector has the ability to send a filter to chris21 when querying for users.
I attempted to write a filter as described by the chris21 BRE SDK documentation but are unable to get my query to work.
The filter has the following syntax: field:operation:value:[join]
I tested the query on the test web page for chris BRE: https://localhost/Scalable/post21.htm
The following example filter works fine:
:cbr="poslst",maxlines=1,sendfields="S",filter01="posstart:<=:=T:"
But if I modify it to filter on detnumber, it doesn’t work anymore:
:cbr="detlst",maxlines=1,sendfields="S",filter01="detnumber:=:=100001"
The error I receive is:
error01="BRE353:detnumber: No connector provided for filter.",status="fail"
Any ideas how to fix my filter on detnumber?
As discovered with Jake, the "No connector provided for filter" is because a fourth operator to the filter is required, even if there is only one filter. The operator is AND or OR.
The Identity Broker for Frontier chris21 documentation will be updated to reflect this.
Thanks to Jake for working with us for an answer.
Fatal error 9001 in Identity Broker for Frontier chris21
As reported by customer:
We started to have an issue with the Unify Connector on Friday night.
The connection between UMC and IdM has failed with the following error;
30/10/2015 20:42:39 Warning Adapterrequest to get entity from adapter space failed. Adapter "Adapter request to get attribute changes from adapter space 53e85508-7648-409c-bd3a-0737028eba29 failed with reason Warning: Fatal error 9001 occurred at Oct 30 2015 8:42PM. Note the error and time, and contact your system administrator
The rest of the error is listed below. Is this an error that you’ve seen before? Would you know how to resolve this?
We have UNIFY Identity Broker v3.0.6 service running.
Reason: System.Data.SqlClient.SqlException:Warning: Fatal error 9001 occurred at Oct 30 2015 8:42PM. Note the errorand time, and contact your system administrator. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Unify.Repository.ChangesItemContext.CreateContext(SqlConnection connection) at Unify.Framework.LinqWhereQuery`5.GetEnumerator() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.<DistinctIterator>d__7a`1.MoveNext() at Unify.Framework.EnumerableExtensions.<ProduceAutoPages>d__9`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnFirst>d__1c`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Framework.ActionOnExceptionEnumerator`1.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at Unify.Adapters.NovellIdentityManagerIdentityBrokerDriverAdapter.Publish(Guid adapterId) at Unify.Adapters.NovellIdentityManagerIdentityBrokerDriverNotificationDecorator.Publish(Guid adapterId) at Unify.Adapters.NovellIdentityManagerIdentityBrokerDriver.Publish(Guid adapterId) at SyncInvokePublish(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.ProcessMessage4(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)"
SQL Server Fatal Error 9001 can occur when one of the log database files is unavailable.
Either you have run out of space on your SQL Server instance, or the log file is at its maximum and needs truncating.
I would suggest:
- Clearing up space on the SQL Server hard drive containing the log and/or database files
- Truncating the log file using the SQL Server Management Studio (or the appropriate T-SQL commands)
- Restarting the Windows Server with SQL Server.
If any of those don’t work, then please let me know and we’ll arrange to have a look.
User with invalid manager gets blocked permanently
It seems that the IDB Lite and IDaaS system fail to handle the following scenario:
- Create a new account in chris21 and make the account’s manager someone who do not and will not exist in AD.
- Let it sync and create the user, when it attempts to update the user’s manager, it fails with the error that the manager could not be found.
- Now change the account’s manager (mgrdetnumber) to someone who do exist in AD.
- The system will continue to resolve the previous manager and will permanently fail to update this user.
Workaround: Run a baseline operation against AD, this is a bad workaround because baselines can usually only be run over weekends.
Customer support service by UserEcho