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.
Insert logging decorators at major operational boundaries
From PRODUCT-7:
In order to aid diagnosis of failing processes, I think it would be a good idea for there to be a configurable option to provide detailed diagnosis information at every interface boundary within Identity Broker.
By that, I mean every Identity Broker process that has interfaces should be able to have a decorator inserted to provide details information about the methods and data provided at each step of a process. This would prevent the kinds of Product Support issues where: "I can't really tell what's going on so I suspect something is wrong with Identity Broker".
This could be achieved by implementing the interfaces of major boundaries, and logging debug information. IDB-84 (filter on log verbosity) will have to be looked at to avoid flooding the logs.
Ability to generate hash on connectors for use as keys and relationships
From DEEWR-55, there were difficulties using multiple fields as relationships. These difficulties will be documented in IDB-352.
It could be of benefit to be able to generate a hash of any number of fields and have this included in the schema for the connector. Could be of benefit to allow this to be used as the key of the connector, and to be used for relationships.
Obviously the UI will have to be updated to accomodate, as would the config files and adapter/factory pairs. The schema provider may have to be updated to allow for these hashes to be suggested, depending on how the configuration is done.
The hash must always calculate the same for the same input, differently should the same values be swapped between two of the fields, and be resilient to clashes.
Create clear database script
From PRODUCT-14, the current clear database script is out of date and there isn't currently a script for v4.0.
Please change TruncatePartitionsCommandText to a .sql file and rename and move to the database directory.
Please add to the installer such that it is included like the other script.
Thanks.
Discovery: Allow control over memory management
Mitchell Dowd (Coffey) has mentioned the desire to limit memory usage. The high memory occurs during FIM import and is likely a result of way transformations can greatly increase the factor of data requested from the database.
Please determine what our options are.
Unexpected timestamp IdB connector behaviour for 12/31/9999 23:59:59
As per attached email:
Adam
When investigating why my adapter join wasn’t pulling through any data I noticed the following:
Note how the startDate format varies from the endDate. Checking the schema both columns are configured as “timestamp”:
Is it possible that the value “9999-12-31T23:59:59Z” exceeds the bounds for this datatype in IdB?
The following is the raw data for the record in question (via the same PowerShell script that loads the connector, but running in debug mode) where both fields are represented as valid datetime values:
seqNumber : 1
userId : 10000167
startDate : 10/01/2014 00:00:00
endDate : 12/31/9999 23:59:59
businessUnit : U
company : AU01
countryOfCompany : AUS
lastModifiedOn : 10/07/2014 09:24:36
lastModifiedDateTime : 10/06/2014 22:24:36
userNav.userId : 10000167
positionNav.code : 50000355
positionNav.effectiveStartDate : 10/01/2014 00:00:00
employeeTypeNav.id : 12088
employeeClassNav.id : 1875
emplStatusNav.id : 1581
Thanks
Bob
Note: initial assessment only and possible workaround suggested if there turns out to be an issue here
image1.png
image2.png
Uncaught exception when configuring an empty DN template
It is possible to throw the below exception (same one as seen in IDB-1036) in the following scenarios:
- Committing an empty DN template search box and hitting Save
- Clicking on the little cross that appears when you mouse over a short template
The error is
System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Value cannot be null. Parameter name: value (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is: System.ArgumentNullException: Value cannot be null. Parameter name: value at System.Xml.Linq.XAttribute..ctor(XName name, Object value) at Unify.Product.IdentityBroker.TemplateDistinguishedName.ToXml(String template) at Unify.Product.IdentityBroker.IdentityServiceCollector.UpdateAdapter(BasicStandardAdapterRemotingConfiguration adapterConfiguration) at SyncInvokeUpdateAdapter(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.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)).
Incorrect directory for PrecompiledViews assembly
In \Source\Web\Unify.Framework.Web.Schedules\Unify.Framework.Web.Schedules.csproj, the PrecompiledViews reference hint path is to a directory on your machine.
Could you please fix this up?
Thanks.
Full-Import on a Placeholder connector fails with 'Method 'Boolean Contains(System.Guid)' has no supported translation to SQL.'
On full-import with the default-test configuration of the test connector 'System Connector', the following exception is encountered:
NotSupportedException: "Method 'Boolean Contains(System.Guid)' has no supported translation"
Stack Trace:
at System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall(SqlMethodCall mc) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) at System.Data.Linq.SqlClient.SqlVisitor.VisitUnaryOperator(SqlUnary uo) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp) at System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select) at System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlVisitor.VisitAlias(SqlAlias a) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlVisitor.VisitSource(SqlSource source) at System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select) at System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select) at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node) at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape, Type resultType, SqlNode node, ReadOnlyCollection`1 parentParameters, SqlNodeAnnotations annotations) at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations) at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() 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.Framework.Data.LinqWhereQuery`5.GetEnumerator() in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Data\Unify.Framework.Data\LinqWhereQuery.cs:line 96
Entity-Schema Configuration:
<entitySchema> <field name="defaultConfiguration" key="false" readonly="false" required="true" validator="string.multi" id="0b41b813-0520-4299-9c9a-01ac05be8d8b" /> <field name="keyedDefaultConfiguration" key="true" readonly="true" required="false" validator="guid" id="226aad17-c909-4fb5-bf43-7e500a6e141f" /> <field name="providerFieldA" key="true" readonly="true" required="false" validator="ref" id="d0bce92d-504f-4880-b824-fc960978e6c1" /> <field name="providerFieldB" key="false" readonly="false" required="true" validator="boolean" id="12570b73-36b1-4bcc-8512-78025ae2dc5f" /> <field name="PersonId" key="true" readonly="true" required="true" validator="guid" id="2393b9b6-dafc-4c6d-a9cf-fa11768b4e7b" /> <field name="PersonName" key="false" readonly="true" required="false" validator="string" id="4176be4e-74ba-491f-bbab-5a920ac810f2" /> <field name="PhoneNumber" key="false" readonly="false" required="false" validator="string" id="9b87374a-8fb9-4de3-ba23-73d1b5600a05" /> <field name="Email" key="false" readonly="false" required="false" validator="string" id="301295ad-90ef-4416-9b1c-bd250f753cca" /> <field name="ManagerId" key="false" readonly="true" required="false" validator="guid" id="dc39a355-90e7-4b4e-9693-c6def826c631" /> <field name="Status" key="false" readonly="true" required="false" validator="int" id="db1b9b31-69e7-4453-9f58-b7f7d3b6b8b1" /> <field name="AccountName" key="false" readonly="true" required="false" validator="dn" id="1af12693-fe38-4c7a-92f3-d84c1c03026e" /> </entitySchema>
Offsets for date/time relational transformations
From SAWTR-26, add offsets to start and end range.
Document.
Customer support service by UserEcho