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.

0
Fixed

Aurion export error: Object must implement IConvertible. at System.Convert.ChangeType

When trying to export Contact_Phone_Number to Aurion I get "Other", "One or more errors occurred" reported in MIM.

The error is on the screen in the Adapter (though not in the Broker log file). I've pasted the error below.

Aurion should already be set up to allow exports to this field as the existing solution does that. I've checked the field name and mapping is the same in the Connector config file for both new and old solutions.

Broker version: 5.3.1. Revision #0

Aurion connector version: 5.3.0.0

It's trying to export a string value for two entities. The export flow rule from MIM is a direct flow and the metaverse attribute is a single-valued string.

Her's the error message from the Adapter screen:

Adapter update entities [Count:2] to adapter Aurion Personnel (549d90e8-e7df-4729-9e4c-58c73d1c98d3) failed with reason System.AggregateException: One or more errors occurred. ---> 
Unify.Product.IdentityBroker.EntitySchemaValidationException: Provided value System.Linq.Enumerable+d__14`2[Unify.Framework.DistinguishedNameValue,System.String] failed validation for type String ---> System.InvalidCastException: Object must implement IConvertible.
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at Unify.Product.IdentityBroker.EntityObjectTypeSchemaValidator`2.CreateValue(Object dataValue)
--- End of inner exception stack trace ---
at Unify.Product.IdentityBroker.EntityObjectTypeSchemaValidator`2.CreateValue(Object dataValue)
at Unify.Product.IdentityBroker.DistinguishedNameGeneratorReverseTransformation.Transform(IEntity[] sourceValue)
at Unify.Framework.AggregateArrayedValueAdapter`2.<>c.b__2_0(TElement[] current, IValueAdapter`2 valueAdapter)
at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
at Unify.Framework.AggregateArrayedValueAdapter`2.Transform(TElement[] baseValue)
at Unify.Framework.AggregateArrayedValueAdapter`2.<>c.b__2_0(TElement[] current, IValueAdapter`2 valueAdapter)
at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
at Unify.Framework.AggregateArrayedValueAdapter`2.Transform(TElement[] baseValue)
at Unify.Product.IdentityBroker.Adapter.GetReverseTransformedEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.Adapter.d__112.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Unify.Product.IdentityBroker.Adapter.d__111.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.Adapter.d__70.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.Adapter.d__69.MoveNext() --- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at Unify.Framework.Auditing.AuditingExtensions.<>c__DisplayClass7_0`1.b__0(Task`1 t)
at Unify.Framework.Auditing.AuditingExtensions.<>c__DisplayClass5_0`1.b__0(Task`1 t)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.AdapterNotifierDecorator.d__39.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.RequestHandlers.BulkRequestEntityGroupProcessor.d__18.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.RequestHandlers.BulkRequestEntityGroupProcessor.d__12.MoveNext() ---> (Inner Exception #0) Unify.Product.IdentityBroker.EntitySchemaValidationException: Provided value System.Linq.Enumerable+d__14`2[Unify.Framework.DistinguishedNameValue,System.String] failed validation for type String ---> System.InvalidCastException: Object must implement IConvertible.
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at Unify.Product.IdentityBroker.EntityObjectTypeSchemaValidator`2.CreateValue(Object dataValue) --- End of inner exception stack trace ---
at Unify.Product.IdentityBroker.EntityObjectTypeSchemaValidator`2.CreateValue(Object dataValue)
at Unify.Product.IdentityBroker.DistinguishedNameGeneratorReverseTransformation.Transform(IEntity[] sourceValue)
at Unify.Framework.AggregateArrayedValueAdapter`2.<>c.b__2_0(TElement[] current, IValueAdapter`2 valueAdapter)
at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
at Unify.Framework.AggregateArrayedValueAdapter`2.Transform(TElement[] baseValue)
at Unify.Framework.AggregateArrayedValueAdapter`2.<>c.b__2_0(TElement[] current, IValueAdapter`2 valueAdapter)
at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
at Unify.Framework.AggregateArrayedValueAdapter`2.Transform(TElement[] baseValue)
at Unify.Product.IdentityBroker.Adapter.GetReverseTransformedEntities(IEnumerable`1 entities)
at Unify.Product.IdentityBroker.Adapter.d__112.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at Unify.Product.IdentityBroker.Adapter.d__111.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.Adapter.d__70.MoveNext() --- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Unify.Product.IdentityBroker.Adapter.d__69.MoveNext()<--- . Duration: 00:00:00.0156171
0
Answered

Reasons for Upgrade?

Daniel Walters 6 years ago updated by Matthew Davis (Technical Product Manager) 6 years ago 1

I have a customer on version 4 of Identity Broker and there's some interest in an upgrade. What is the current version of UnifyBroker? And what reasons are there to give them to upgrade from 4? Their main complaint is with the connector browsing and searching being unresponsive and ambiguous as to whether a search has loaded or no results have returned. Has there been work done on the search/browse for connectors? What else is good about the new version compared to 4?

Answer

Hey Dan,

The current version of Identity Broker is 5.3.1.1.

For a complete list of high-level features since 4.0, please see this link:

https://voice.unifysolutions.net/knowledge-bases/7/articles/3058-unifybroker-release-notes

The UI has been changed to use a REST endpoint, and improvements made so there's no longer issues with the browsing and searching being unresponsive. 

The other main benefits of upgrading include:

  • using LDAP for data between IDB and MIM, which allows for faster data and more flexible MA configuration
  • Powershell adapter transformations
  • Auditing

Identity Broker 4.x is also out of support, so it would be in their best interests to upgrade. 5.3 will be supported until at least 03/2023.

0
Completed

Where to find Credentials from FIM

Daniel Walters 6 years ago updated by Matthew Davis (Technical Product Manager) 6 years ago 4

I'm working with an existing implementation and looking to do a refresh of a dev environment with what's in prod. I'll need all the MA credentials to do that and no one has a record of the identity broker credentials. They're using version 5 (the one that shows as version 0.0.5). Is there anywhere I can lookup or reset the credentials that are used to connect to Identity Broker from the FIM IdB Management Agent?

Answer

Hi Dan,

There's no way to retrieve existing credentials, but you can create a new account which will work the same.

See this link for documentation on achieving this: https://voice.unifysolutions.net/knowledge-bases/7/articles/2948-configuring-ldap-gateway-authentication-accounts 

0
Answered

SQL Connector/Adapter

Daniel Walters 6 years ago updated by Adam van Vliet 6 years ago 8

I haven't worked with UNIFYBroker in some time. I've got a SQL Connector/Adapter here and I'm looking for the table that it's connecting to. The agent has a connection string in it that specifies the server and the database but not the table name and the connector doesn't contain the table name either. I can see when I create a new connector I can choose a schema provider. Can you explain how a connector knows which table it is connecting to or does it pool all the attributes from all tables in the database - I thought that's what an adapters do. There's no UNIFYBroker\SQL category so I've left uncategorized.

Answer

You can also get back to that view by editing the connector, however the table name should be visible on the connector details page.

The table name should also definitely be in the extensibility file and should look like this:

<Extended>
    <communicator owner="dbo" table="mytable" readThreshold="1000" />
</Extended>

If this isn't the case, can you provide screenshots and the extensibility file?

0
Fixed

"A task was cancelled' when refreshing connector schema

Carol Wapshere 6 years ago updated by Beau Harrison (Senior Product Software Engineer) 6 years ago 5

After upgrading to Aurion connector 5.3.0.0, on Broker 5.3.1.1, I cannot update the schema for most of my connectors. After choosing "Query fields" it appears to run for 1-2 minutes then fails with "A task was cancelled". I can't see anything in the IDB log file relating to this. The Full Import of the connector runs.

0
Answered

Could not load type 'Unify.Product.IdentityBroker.IEntitySchemaConfigurationUtility'

I'm suddenly getting the error below in a Dev environment trying to update the schema of any Aurion connector. 

It's not happening in Test and the versions are slightly different:

DEV: v5.3.1 Revision #1

TEST: v5.3.1 Revision #0

20181213,02:32:40,UNIFYBroker,Connector Engine,Error,"The schema for 'Aurion Employee Connector' connector was not updated for the following reason: System.TypeLoadException: Could not load type 'Unify.Product.IdentityBroker.IEntitySchemaConfigurationUtility' from assembly 'Unify.IdentityBroker.Connector.Interfaces, Version=5.3.0.0, Culture=neutral, PublicKeyToken=84b9288cb2633de4'.
   at Unify.Connectors.AurionPersonSchemaProvider.GetSchema(ISchemaProviderFactoryInformation factoryInformation)
   at Unify.Product.IdentityBroker.ConnectorEngine.SchemaProviderResult(IOperationalConnector`1 operationalConnector, Func`2 selector, IEnumerable`1 appliedFields)",Normal
20181213,03:09:21,UNIFYBroker,Logging Engine,Information,Log file started.,Minimal
20181213,03:09:21,UNIFYBroker,Connector Engine,Error,"The schema for 'Aurion Locations Connector' connector was not updated for the following reason: System.TypeLoadException: Could not load type 'Unify.Product.IdentityBroker.IEntitySchemaConfigurationUtility' from assembly 'Unify.IdentityBroker.Connector.Interfaces, Version=5.3.0.0, Culture=neutral, PublicKeyToken=84b9288cb2633de4'.
   at Unify.Connectors.AurionCustomSchemaProvider.GetSchema(ISchemaProviderFactoryInformation factoryInformation)
   at Unify.Product.IdentityBroker.ConnectorEngine.SchemaProviderResult(IOperationalConnector`1 operationalConnector, Func`2 selector, IEnumerable`1 appliedFields)",Normal
Answer

Hi Carol 

Using your install directory I was able to reproduce this issue. This cause is you using an out of date version of the connector. I was able to successfully load the schema providers by updating to the latest release of the connector.

0
Answered

SAP ABAP documentation

Ryan Crossingham 6 years ago in UNIFYBroker/SAP ERP Human Capital Management updated by Adam van Vliet 6 years ago 1

Hi Guys,

I have a client looking for some additional information regarding the ABAP modules required for idB for SAP comms. They would like to know 

  • Why we need them
  • Exactly what they do
  • What we pass to execute them
  • If they are "SAP Certified"
  • Who wrote them

Not sure if any of this exists.

They are trying to understand why broker does not use the OOTB modules to perform its tasks.

My understanding was that the modules were required in order to output the return values in an idB compliant manner.

Any information would assist

Cheers,
Ryan

Answer
Adam van Vliet 6 years ago
Why we need them

ABAP is the designated method for interacting with SAP, that works across their releases.

Exactly what they do

The read modules allow us to read from one or more tables, shaping the data into a format that is consistent across each of the 'objects' that we read. The write modules allow us to add/update/upsert to one or more tables, in a format that is consistent across each of the 'objects' that we write.

What we pass to execute them

To perform a write we send the headers being updated, the 'shape' of the 'object' being updated, the details of the records being updated.

If they are "SAP Certified"

No, it was determined that it did not make commercial sense. You'll be able to see exactly what is contained within the modules once imported. However, we would be more than happy to discuss working with you on this if required.

Who wrote them

We make use of an SAP consultant who has over 15 years' experience working with ABAP.

0
Fixed

Cannot update LocationSurname

Exporting LocationSurname to CM v9 is not working. The CM API returns no error, it just doesn't update the Surname.

I have successfully updated other attributes including LocationGivenNames, LocationJobDescription, LocationEmailAddress, LocationPhoneNumber and LocationIdNumber.

Some emailing around with the customer has revealed that they had a similar problem trying to bulk load data into the UAT environment using the "Data Loader". Someone thinks that the "Unique Name" field must be provided with the upload data when using a CSV file, and that this is a recent change in CM. (I have been unable to verify this and have no idea if the same issue would affect the API.)

I did try setting the LocationNickname as well (which is titled "Unique Name" in the API doco). I can also set this field but it doesn't make any difference to the Surname. I tried both:

- Setting the NickName then attempting to update the Surname on a subsequent export

- Setting the NickName and the Surname at the same time

For both the NickName was set, but the Surname did not change in CM.

Answer

Hi Carol

The LocationSurname is a composite field of LocationSurnamePrefix and LocationSurnameNoPrefix. In the API explorer, it is possible to set the LocationSurname field and the Prefix and NoPrefix fields are updated as needed. The CM client library, however, seems to block the ability to set LocationSurname, presumably because if you assign a no-prefix surname to LocationSurname instead of LocationSurnameNoPrefix, any value in LocationSurnamePrefix is lost.

To set the surname you'll have to use the LocationSurnamePrefix and LocationSurnameNoPrefix fields. Consider LocationSurname a readonly field, it will be by default in the next release.

0
Answered

Export error "Other"

Eddie Kirkman 6 years ago updated by Matthew Davis (Technical Product Manager) 6 years ago 1

When exporting to IdB from MIM in a customer DEV lab I am getting this error.

MIM reports "other"

detail shows connected data source error code 0x8023134a

detail button gives

System.Exception: Status: 0
   at Unify.IdentityBroker.D2L.Agent.DefaultCommunicator.SendCommand(String urlPath, Method method, Object data) in C:\Projects\TAFE\Repositories\Connectors.D2L\V5 Connector\Source\Agent\DefaultCommunicator.cs:line 161
   at Unify.IdentityBroker.D2L.Agent.DefaultCommunicator.Update(AgentEntity entity) in C:\Projects\TAFE\Repositories\Connectors.D2L\V5 Connector\Source\Agent\DefaultCommunicator.cs:line 96
   at Unify.IdentityBroker.D2L.Connector.Connector.UpdateEntity(IConnectorEntity entity, ISaveEntityResults`2 results, DefaultCommunicator communicator) in C:\Projects\TAFE\Repositories\Connectors.D2L\V5 Connector\Source\Connector\Connector.cs:line 199

idb log shows:

19/Nov/2018 16:45:59
  • Information
LDAP EngineA client has connected to the LDAP endpoint from address: 127.0.0.1:62654.
19/Nov/2018 16:45:59
  • Information
LDAP engineHandling of LDAP bind request.
Handling of LDAP bind request received on connection 127.0.0.1:62654 to connect as user admin completed successfully. The bind was successful. Duration: 00:00:00.1093702.
19/Nov/2018 16:46:00
  • Information
LDAP engineHandling of LDAP Bulk Start request.
Handling of LDAP Bulk Start request received from user admin on connection 127.0.0.1:62654 completed successfully. Duration 00:00:00.
19/Nov/2018 16:46:00
  • Information
ConnectorRequest to add entity to connector.
Request to add entities [Count:5] to connector D2L Connector.
19/Nov/2018 16:46:00
  • Information
ConnectorAdd entities to connector completed.
Add entities [Count:5] to connector D2L Connector reported 5 entities saved. Duration: 00:00:00.2656223
19/Nov/2018 16:46:00
  • Information
LDAP engineHandling of LDAP Bulk Update request.
Handling of LDAP Bulk Update request received from user admin on connection 127.0.0.1:62654 completed successfully without results available for logging. Duration 00:00:00.5312437.
19/Nov/2018 16:46:00
  • Information
LDAP engineHandling of LDAP Bulk End request.
Handling of LDAP Bulk End request received from user admin on connection 127.0.0.1:62654 completed successfully without results available for logging. Duration 00:00:00.
19/Nov/2018 16:46:01
  • Information
LDAP engineHandling of LDAP unbind request.
Handling of LDAP unbind request received on connection 127.0.0.1:62654 to connect as user admin completed successfully. Duration: 00:00:00.
19/Nov/2018 16:46:06
  • Information
Change detection engineChange detection engine unscheduled started.
Change detection engine unscheduled for connector D2L Connector started.
19/Nov/2018 16:46:06
  • Information
Change detection engineChange detection engine unscheduled completed.
Change detection engine unscheduled for connector D2L Connector completed. Duration: 00:00:00.1093760


So everything looks fine from the IdB end, but MIM whinges and fails.  Any idea where I should look?

Answer

Hey Eddie,

The D2L connector is a Professional Services connector that has been custom written for the customer. 

To help you out, I had a quick look at the source, and that error comes from the request to the web service. The HTTP status code being returned is 0 and so therefore indicates an issue with the web service.

To assist with debugging, you could turn on diagnostic logging - the connector appears to have some logging help built in which logs the raw request and response. 

I'd also recommend ensuring that the web service is functioning correctly.

If all else fails, contacting the PS developer who wrote the connector is recommended - they should be able to help out with debugging the issue.

0
Answered

Associations Connector fails with "Only one use of each socket address is normally permitted"

Carol Wapshere 6 years ago in UNIFYBroker/Micro Focus Content Manager updated 6 years ago 15

We have just put a solution in UAT that was working correctly in Dev. The two Locations connectors (Person and Organization) have imported fine. The Associations connector runs for a couple of minutes then fails with the error below.

I have asked the CM admin to look for service API errors on their side, but also wanted to ask: does the Associations connector make multiple connections that could be over-lapping?

Change detection engine import all items failed.
Change detection engine import all items for connector CM Associations failed with reason Unable to connect to the remote server. Duration: 00:01:38.0443655
Error details:
System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted 10.111.200.11:80
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at ServiceStack.ServiceClientBase.Send[TResponse](String httpMethod, String relativeOrAbsoluteUrl, Object request)
at Unify.Product.IdentityBroker.HPTrimV9WebCommunicator.<getalllocationuris>d__36.MoveNext()
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.HPTrimV9WebCommunicator.InnerGetAssociations(IEnumerable`1 uri, IEnumerable`1 relationshipTypes, Int32 pageSize, IWebServiceCommunicatorInformation information, CancellationToken token)
at Unify.Product.IdentityBroker.HPTrimV9WebCommunicator.GetAllAssociations(IEnumerable`1 relationshipTypes, Guid connectorId, String searchQuery, Int32 pageSize, IWebServiceCommunicatorInformation information, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.HPTrimWebCommunicatorDecorator.GetAllAssociations(IEnumerable`1 relationshipTypes, Guid connectorId, String searchQuery, Int32 pageSize, IWebServiceCommunicatorInformation information, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Unify.Product.IdentityBroker.HPTrimWebCommunicatorDecorator.GetAllAssociations(IEnumerable`1 relationshipTypes, Guid connectorId, String searchQuery, Int32 pageSize, IWebServiceCommunicatorInformation information, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.HpTrimAgent.GetAllAssociations(IEnumerable`1 relationshipTypes, Guid connectorId, String searchQuery, Int32 pageSize, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.HpTrimAssociationsConnector.GetAllEntities(IStoredValueCollection storedValueState, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.ConnectorToReadingConnectorBridge.GetAllEntities(IStoredValueCollection storedValueState, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.AuditReadingConnectorDecorator.GetAllEntities(IStoredValueCollection storedValues, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.EventNotifierReadingConnectorDecoratorBase`1.GetAllEntities(IStoredValueCollection storedValues, CancellationToken cancellationToken)
at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.ImportAllChangeProcess()
at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.RunBase()
at Unify.Framework.DefinedScopeJobAuditTrailJobDecorator.Run()
at Unify.Product.IdentityBroker.ConnectorJobExecutor.<>c__DisplayClass30_0.<run>b__0()
at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state)
</run></getalllocationuris>
Answer

Is there any association fields on the connector that are not needed? The connector needs to make a call per field, per location, so cutting the connector schema to only what's needed would greatly reducing the number of calls being made. This may be enough to be a temporary work around while I look into this issue further.