Aggregating using child endpoint

Hi,

I have configured parent and child endpoint. The parent endpoint returns all the users and their information in single call, then I have configured a child endpoint to retrieve user roles in second call, by sending the userid from the first response.

I am able to get the userid from the response and create the URL for the child endpoint, (the url created works fine in postman), but the web service connector throws the following error

The error is not giving much information on what is going wrong here, but there are things like hasNext. So I am wondering if this is a connector bug and child endpoint should be called for each parent endpoint call instead of being called at the end of entire parent endpoint call

Exception occurred for account aggregation: Url: > https://demo.api.insight.rapid7.com/account/api/1/users/012345/roles, Message: 500 : {"message":"An unexpected error occurred"}, HTTP Error Code: 500
> connector.sdk.webservices.exception.WebServicesSdkException: {"message":"An unexpected error occurred"}
> at connector.sdk.webservices.ExecutionMediator.processEndpoint(ExecutionMediator.java:643) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.sdk.webservices.ExecutionMediator$DefaultChildEndpointProcessor.processChildEndpoint(ExecutionMediator.java:1198) ~[connector-bundle-webservices.jar:8.3p2]
> at sailpoint.connector.webservices.v2.RequestOrchestratorV2$CustomChildEndpointProcessor.process(RequestOrchestratorV2.java:719) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.sdk.webservices.ExecutionMediator.processEndpoint(ExecutionMediator.java:717) ~[connector-bundle-webservices.jar:8.3p2]
> at sailpoint.connector.webservices.v2.WebServiceFacadeV2$WebServiceIterator.getIterator(WebServiceFacadeV2.java:1993) [connector-bundle-webservices.jar:8.3p2]
> at sailpoint.connector.webservices.v2.WebServiceFacadeV2$WebServiceIterator.hasNext(WebServiceFacadeV2.java:2034) [connector-bundle-webservices.jar:8.3p2]
> at sailpoint.connector.ConnectorProxy$CustomizingIterator.peek(ConnectorProxy.java:1331) [connector-bundle-identityiq.jar:8.3p2]
> at sailpoint.connector.ConnectorProxy$CustomizingIterator.hasNext(ConnectorProxy.java:1358) [connector-bundle-identityiq.jar:8.3p2]
> at sailpoint.api.Aggregator.aggregateAccounts(Aggregator.java:3269) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.Aggregator.primaryAccountAggregation(Aggregator.java:2940) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.Aggregator.aggregateApplication(Aggregator.java:2788) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.Aggregator.phaseAggregate(Aggregator.java:2658) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.Aggregator.execute(Aggregator.java:2200) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.task.ResourceIdentityScan.doUnpartitioned(ResourceIdentityScan.java:248) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.task.ResourceIdentityScan.execute(ResourceIdentityScan.java:228) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.TaskManager.runSync(TaskManager.java:981) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.api.TaskManager.runSync(TaskManager.java:764) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at sailpoint.scheduler.JobAdapter.execute(JobAdapter.java:128) [identityiq.jar:8.3p2 Build a3a0711bca8-20230213-093637]
> at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.3.2.jar:?]
> at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.3.2.jar:?]
> Caused by: connector.common.http.exception.HttpException: {"message":"An unexpected error occurred"}
> at connector.common.http.client.impl.ApacheHttpClientWrapper.handleFailedRequest(ApacheHttpClientWrapper.java:552) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.common.http.client.impl.ApacheHttpClientWrapper.execute(ApacheHttpClientWrapper.java:338) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.common.http.client.HttpClientWrapper.execute(HttpClientWrapper.java:137) ~[connector-bundle-webservices.jar:8.3p2]
> at sailpoint.connector.webservices.v2.WebServiceFacadeV2$1$1.execute(WebServiceFacadeV2.java:224) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.common.http.client.impl.ThrottledHttpClient.execute(ThrottledHttpClient.java:95) ~[connector-bundle-webservices.jar:8.3p2]
> at connector.sdk.webservices.ExecutionMediator.processEndpoint(ExecutionMediator.java:613) ~[connector-bundle-webservices.jar:8.3p2]
> ```

So one thing I can note is that there was a change in the ordering of how parent/child endpoints are executed in IIQ somewhere around 8.1p3/8.2. In previous versions, the parent ran fully before the child was iterated, but in later versions it was updated to run the full hierarchy of Parent → Child for each parent page (and I believe the child endpoints are all executed before the parent WebServices AfterOperation rule is invoked, but I could be wrong on that).

Also, HTTP 500 is an internal server error on the API side, so you might want to try digging into the WS connector’s requests and responses and see if you can replicate that in postman as well.

1 Like

There could potentially be an issue with the constructed URL for the child endpoint, or something off with the child endpoint headers.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.