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.
Relative DN Type UI breaks If no DN type fields are in the schema
The following is unhandled:
System.ArgumentException: The parameters dictionary contains a null entry for parameter 'transformationId' of non-nullable type 'System.Guid' for method 'System.Web.Mvc.ActionResult AddDNGenerator(System.Guid, System.Guid)' in 'Unify.Connect.Web.AdapterController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters at System.Web.Mvc.ActionDescriptor.ExtractParameterFromDictionary(ParameterInfo parameterInfo, IDictionary`2 parameters, MethodInfo methodInfo) at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
Null reference on entity search when using a DN field added by a relational transformation
Attempting an entity search on an adapter with a DN value generated by a relational transformation following the changes for IDB-514, the following error appears:
System.ArgumentNullException: Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.SelectTSource,TResult(IEnumerable`1 source, Func`2 selector)
at Unify.Framework.IO.DistinguishedNameMultiPartComponent.ToString() in c:\workspaces\DEV\FrameworkCore\Source\IO\Unify.Framework.IO.LDIF\DistinguishedNameMultiPartComponent.cs:line 140
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
at Unify.Framework.IO.DistinguishedName.GetStringValue() in c:\workspaces\DEV\FrameworkCore\Source\IO\Unify.Framework.IO.LDIF\DistinguishedName.cs:line 214
at Unify.Connect.Web.EntitySerializer.<>c_DisplayClass5.<EntityDisplayValues>b_2(GroupedNameValueCollectionKey valueKey) in c:\workspaces\DEV\IdentityBroker\Source\Studio\Unify.Connect.Web\Extensions\Entity\EntitySerializer.cs:line 43
at System.Linq.Enumerable.ToDictionaryTSource,TKey,TElement(IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
at Unify.Connect.Web.EntitySerializer.EntityDisplayValues(IEntity entity, IDictionary`2 schemaConfiguration) in c:\workspaces\DEV\IdentityBroker\Source\Studio\Unify.Connect.Web\Extensions\Entity\EntitySerializer.cs:line 41
at ASP.Page_Views_Shared_SearchEntities_cshtml.<>cDisplayClass12.<RenderEntities>b_11(TextWriter __razor_helper_writer) in c:\Program Files\UNIFY Solutions\Identity Broker\Web\Views\Shared\SearchEntities.cshtml:line 623
at ASP._Page_Views_Shared_SearchEntities_cshtml.Execute() in c:\Program Files\UNIFY Solutions\Identity Broker\Web\Views\Shared\SearchEntities.cshtml:line 133
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.StartPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.<>c_DisplayClass1c.<InvokeActionResultWithFilters>b_19()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
Extend Database Connector for polling (delta) imports
The Identity Broker IDB40:Database Connector should be extended to provide other methods of doing polling (delta) imports:
- Select a datetime column.
- Select another table for delta information (optionally clear table).
- PowerShell script to return the changed entity id's (copy from PowerShell connector), the regular database GetEntities call (unchanged) to do the rest.
Consider another method where a PowerShell script is configurable to obtain the changed keys, allowing the database connector to then retrieve those items. Or some other use of PowerShell to allow for this to be configurable.
Import containers even when there are no objects in the connector
See ENVIRON-25. The Identity Broker adapter currently generates container objects out of all the DNs that it processes and passes them through on an adapter import. This is especially true when DN generation is configured in Identity Broker to be of a similar format to
cn=Field,cn=ObjectClass (constant field generator)
which would generate a container object with DN "cn=ObjectClass" and pass it to the IdM system.
In FIM, you cannot provision objects until the container exists in the connector space, meaning at present you either need to have already imported an object with a DN in this format, or you would need to provision the container to the connector space. This is fine for most cases but when you have systems that are targets only that will begin empty, you will have to either add a mock object to the system (which is sometimes impossible) or write some provisioning logic to add the empty container.
It would be useful if in cases where the DN structure for adapters is known to have been set up as described above (ie. using constant field generators), to always pass through the container.
What should I set the validator to so that I can import a smallint from a SQL table?
I'm configuring a connector that connects to SQL database. There's a field in the table whose type is smallint.
When I try to import the unifylog.csv file returns this line for each row.
Type ShortValue of value 1 in field Status is invalid. Expected type SingleValue.,Normal
I got the list of valid validators below from an Event Log error when I tried setting the validator to short.
boolean, binary, timestamp, date, decimal, dn, guid, int, long, double, single, string, boolean.multi, timestamp.multi, date.multi, decimal.multi, dn.multi, guid.multi, int.multi, long.multi, double.multi, single.multi, string.multi.
I've tried setting the validator in the connector config for the status field to int, long and string and none of them have worked.
What should I set the validator to so that I can import a smallint from a SQL table?
Improve exception when object class mismatch encountered
There is no safe retrieve on the objectclass lookup for adapter saves,
(LDIFToAdapterEntitySaveAdapterBase.cs line 118), this throws an exception similar to the following:
System.Exception: Error occurred when attempting to save entity with distinguished name UID=a71bfacc-8201-4ec6-84c3-0a2ecc942d2e Error: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Unify.Product.IdentityBroker.LDIFToAdapterEntitySaveAdapterBase`1.ConvertValues(String objectClass, IEnumerable`1 convertedValues) at Unify.Product.IdentityBroker.LDIFToAdapterEntitySaveChangeAdapter.GetConvertedValuesFromSchema(String objectClass, IEnumerable`1 values) at Unify.Product.IdentityBroker.LDIFToAdapterEntitySaveChangeAdapter.<Transform>d__3.MoveNext() at Unify.Product.IdentityBroker.LDIFAdapterBase.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.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) at Unify.Product.IdentityBroker.IdentityBrokerManagementAgentProxy.ExportEntry(ModificationType modificationType, String[] changedAttributes, CSEntry csentry)
This isn't very descriptive of the real problem and needs to be updated; make sure every usage of that dictionary employs the TryGet call.
Comparison of SingleValues in IdentityBroker fails with exception "Property 'Single Value' is not defined for type 'System.Nullable`1[System.Double]'"
The following exception is thrown when a comparison is made between two DoubleValues, through an interLINQ query from management studio:
Property 'Single Value' is not defined for type 'System.Nullable`1[System.Double]'
with a complete stack trace of:
at System.Linq.Expressions.Expression.Property(Expression expression, PropertyInfo property) at Unify.Product.IdentityBroker.Repository.NativeTypeInformation`4.CreateEntityValueTypeExpressionBase(Expression tableMember) in S:\hg\Product\IdentityBroker\b\Source\Entity\Unify.IdentityBroker.Entity.Repository.Sql\NativeTypeInformations\NativeTypeInformation.cs:line 303 at Unify.Product.IdentityBroker.Repository.NativeTypeInformation`4.CreateEntityValueTypeExpression(Expression sourceExpression) in S:\hg\Product\IdentityBroker\b\Source\Entity\Unify.IdentityBroker.Entity.Repository.Sql\NativeTypeInformations\NativeTypeInformation.cs:line 76 at Unify.Product.IdentityBroker.Repository.NativeTypeInformation`4.CreateDataValueExpression(BinaryExpression originalExpression, ExpressionType nodeType, IEntityExpressionVisitor entityExpressionVisitor, Expression parameterExpression, Expression valueExpression) in S:\hg\Product\IdentityBroker\b\Source\Entity\Unify.IdentityBroker.Entity.Repository.Sql\NativeTypeInformations\NativeTypeInformation.cs:line 280 at Unify.Product.IdentityBroker.Repository.NativeTypeInformation`4.GetGetValueBinaryExpression(Expression left, Expression right, BinaryExpression binaryExpression, ExpressionType nodeType, IEntityExpressionVisitor entityExpressionVisitor) in S:\hg\Product
The comparison code is the following:
SingleValue innerValue = float.Parse(value); return queryable => from item in queryable where item.Contains(schemaKey) && item.GetValue<SingleValue>(schemaKey) < innerValue select item;
Alternatively the behaviour can be replicated by creating a SingleValue comparison search query through the new entity search UI.
Identity Broker 4 requests
Originally a comment on PRODUCT-2:
Some Features that i would like to see included in IDB 4.
I Agree with Eddie on the search/filter feature - this has caused me frustration in the past when trying to view large data sets.
Is it possible to implement some sort of paging system here so that it doesn't have to load the entire data set everytime.
A couple of other points on the entity search, fistly it would be great if it could remember the configuration of columns selected from the column chooser. It's frustrating to have to repeat this every time a search is done. Secondly is it possible to make this view refreshable - currently the search window has to be closed and reopened for this to happen.In the connection monitor view, it would be great to see status updates on import/export operations.
Ie. No Records processed/remaining, elapsed time/est remaining time etc.Another feature that would be useful in this view is the ability to disable/enable scheduled imports to specific connectors, or a master control to disable all scheduling.
The ability to configure connectors from the interface would be very useful - in particular, to be able to configure connection attributes, and perform a connection test based on those attributes.
Unable to view previously installed IdB Components when logged on as a different user
When I attempted in install a newer version of Identity Broker for Sharepoint at DET the first step was to uninstall the previous version. Unfortunately I could not see it. I checked with Eddie and he said he had this problem as well. Apparently the Add Remove Programs in Control panel only displays the product if you logged on as the user who installed it originally. He found this with previous installs as well when Matt Clark had originally installed it.
The version that was originally installed was
UNIFY Identity Broker for Microsoft SharePoint v3.0.1 x86.msi
The new version I attempted to install was:
UNIFY Identity Broker for Microsoft SharePoint v3.0.5.2 x86.msi
I did manage to see some of the other Identity Broker components but am not familiar enough with the component list to state whether it is ONLY an issue with the Sharepoint Connector or not. Either way it is definitely an issue with Sharepoint. I have attached a screenshot of what I see with my AD Account.
I think the following is also problematic:
UNIFY Identity Broker Service v3.0.0 x86.msi
Can this please be addressed in the next build and also a check of all the components to make sure it is not a problem elsewhere.
thanks,
Craig
IdBComponentsCG.JPG
Improve error message when DN generator cannot generate DN because of an empty field
In a solution where I was using Relational transformations to generate distinguished names for attributes within the same connector, I encountered the following error. This was because not every field I had selected in the DN configuration had a value. This error message could be improved to point the user in a better direction.
Version is v4.0.0 RTM
Adapter import all entities for adapter failed.
Adapter import all entities for adapter a5ce2427-2d82-417b-8371-7c0e6d7eb300 failed with reason Specified argument was out of the range of valid values.
Parameter name: attributeValue. Duration: 00:00:24.5312500
Error details:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: attributeValue
at Unify.Framework.IO.DistinguishedNameComponent..ctor(DNAttributeType attributeType, String attributeValue)
at Unify.Product.IdentityBroker.EntityFieldValueDistinguishedNameComponentGenerator`2.Transform(TEntity sourceValue)
at Unify.Product.IdentityBroker.EntityDistinguishedNameGenerator`2.<>c_DisplayClass7.<Transform>b_6(IEntityDistinguishedNameComponentGenerator`2 factory)
at System.Linq.Enumerable.<>c_DisplayClass12`3.<CombineSelectors>b_11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
at Unify.Product.IdentityBroker.EntityDistinguishedNameGenerator`2.GetDistinguishedName(Func`2 componentRetrieval)
at Unify.Product.IdentityBroker.EntityDistinguishedNameGenerator`2.Transform(TEntity sourceValue)
at Unify.Product.IdentityBroker.DistinguishedNameAttributeMapper.MapAttributeValues(IEntity leftSideEntity, IEntity rightSideEntity)
at Unify.Product.IdentityBroker.ComposedDNAttributeMapper.MapAttributeValues(IEntity leftSideEntity, IEntity rightSideEntity)
at Unify.Product.IdentityBroker.EntityDistinguishedNameStaticRelationValueAdapterBase.TransformEntity(IEntity baseValue, ILookup`2 lookupResults)
at Unify.Product.IdentityBroker.EntityDistinguishedNameStaticRelationValueAdapterBase.<>c_DisplayClass7.<Transform>b_3(IEntity item)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
at Unify.Product.IdentityBroker.EntityDistinguishedNameStaticRelationValueAdapterBase.Transform(IEnumerable`1 sourceValue)
at Unify.Framework.AggregateValueAdapter`1.<Transform>b__0(T current, IValueAdapter`2 valueAdapter)
at System.Linq.Enumerable.AggregateTSource,TAccumulate(IEnumerable`1 source, TAccumulate seed, Func`3 func)
at Unify.Framework.AggregateValueAdapter`1.Transform(T baseValue)
at System.Linq.Enumerable.<>c_DisplayClass12`3.<CombineSelectors>b_11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Unify.Framework.Collections.EnumerableExtensions.<ActionOnLast>d__17`1.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
at Unify.Framework.Collections.EnumerableExtensions.<ActionOnLast>d__17`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Unify.Framework.Collections.ActionOnExceptionEnumerator`1.MoveNext()
at Unify.Framework.Collections.EnumerableExtensions.<ActionOnLast>d__17`1.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Unify.Framework.Collections.ActionOnExceptionEnumerator`1.MoveNext()
at Unify.Framework.Collections.EnumerableExtensions.<ActionOnLast>d__17`1.MoveNext()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext()
at Unify.Framework.IO.LDIFComponentFileGenerator`1.GenerateFile(TextWriter writer, IEnumerable`1 entries)
at Unify.Product.IdentityBroker.LDIFAdapterBase.<>c_DisplayClass14`1.<CreateLDIFComponentStream>b_13(Stream stream)
at Unify.Framework.IO.LazyEvaluationStream.Evaluate(Object obj)
Customer support service by UserEcho