You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@syncope.apache.org by Stéphane Popoff <st...@spopoff.net> on 2026/01/17 16:48:54 UTC
Help needed on error with FilteredResultsHandler
Hi,
When requesting a record on a Rest connector that respond with data:
{"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
I found in Syncope log this exception:
Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
{Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
__ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
{Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
Value=[appAdmin]}], Name=Attribute: {Name=__NAME__, Value=[appAdmin]}}
was returned by the connector but failed to pass the framework filter.
This seems like wrong implementation of the filter in the connector.
at org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
at org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
... 14 more
My questions is about the connector filter:
- What is attended by the filter ?
- Where to find the configuration of that filter ?
- Why is the external attribute appName, mapped on the internal name
attribute is wrong for the filter ?
Best regards,
Stéphane POPOFF
Re: Help needed on error with FilteredResultsHandler
Posted by Lorenzo Di Cola <lo...@apache.org>.
Hello,
very nice you resolved your issues.
What you want to do now, with Syncope, is not the correct way to do that.
You can not use mapping for logical things, mapping - more or less - is one
to one from Syncope to the external resource; you can calculate some
expression by using JEXL but that's all.
In your case depends totally from what you need to do, generally you have
to forward logic things in REST scripts, so Syncope will create all
attributes from the mapping and BEFORE the provision you'll adjust all the
attributes for the external resource.
HTH
Best regards,
Lorenzo
Il giorno gio 22 gen 2026 alle ore 12:53 Stéphane Popoff <
stephane@spopoff.net> ha scritto:
> Hi Lorenzo,
>
> Schema and mapping are corrected now. I can propagate information from
> a group to an account if I use a mapping like:
> "groups[appAdmin].appName".
> My question is what can I do to dynamically change, maybe by program,
> the value "appAdmin" ?
>
> Best regards,
>
> Stéphane POPOFF
>
> {
> "key": "admin",
> "connector": "019be54f-fec3-7403-b739-f82d00f6012f",
> "connectorDisplayName": "RestAdmin",
> "provisions": [
> {
> "anyType": "GROUP",
> "objectClass": "__GROUP__",
> "auxClasses": [
> "AdminGroup"
> ],
> "syncToken": null,
> "ignoreCaseMatch": false,
> "uidOnCreate": null,
> "mapping": {
> "items": [
> {
> "intAttrName": "name",
> "extAttrName": "appName",
> "connObjectKey": true,
> "password": false,
> "mandatoryCondition": "true",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "key",
> "extAttrName": "key",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "groups[appAdmin].projects",
> "extAttrName": "projects",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "PROPAGATION",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "groups[appAdmin].appName",
> "extAttrName": "appName",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "PROPAGATION",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> }
> ],
> "connObjectLink": null
> }
> },
> {
> "anyType": "USER",
> "objectClass": "__ACCOUNT__",
> "auxClasses": [
> "AdminGroup"
> ],
> "syncToken": null,
> "ignoreCaseMatch": false,
> "uidOnCreate": null,
> "mapping": {
> "items": [
> {
> "intAttrName": "username",
> "extAttrName": "login",
> "connObjectKey": true,
> "password": false,
> "mandatoryCondition": "true",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "appName",
> "extAttrName": "appName",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "key",
> "extAttrName": "key",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "login",
> "extAttrName": "login",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "projects",
> "extAttrName": "projects",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "BOTH",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "groups[appAdmin].appName",
> "extAttrName": "appName",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "PROPAGATION",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> },
> {
> "intAttrName": "groups[appAdmin].projects",
> "extAttrName": "projects",
> "connObjectKey": false,
> "password": false,
> "mandatoryCondition": "false",
> "purpose": "PROPAGATION",
> "propagationJEXLTransformer": null,
> "pullJEXLTransformer": null,
> "transformers": []
> }
> ],
> "connObjectLink": null
> }
> }
> ],
> "orgUnit": null,
> "propagationPriority": 10,
> "enforceMandatoryCondition": true,
> "createTraceLevel": "ALL",
> "updateTraceLevel": "ALL",
> "deleteTraceLevel": "ALL",
> "provisioningTraceLevel": "ALL",
> "passwordPolicy": null,
> "accountPolicy": null,
> "propagationPolicy": null,
> "inboundPolicy": null,
> "pushPolicy": null,
> "provisionSorter": null,
> "authPolicy": null,
> "accessPolicy": null,
> "confOverrideFlag": true,
> "confOverrideValue": [],
> "capabilitiesOverrideFlag": false,
> "capabilitiesOverrideValue": null,
> "propagationActions": []
> }
>
> Le mer. 21 janv. 2026 à 10:14, Lorenzo Di Cola <lo...@apache.org> a
> écrit :
> >
> > Hi Stéphane,
> >
> > nice to hear you're going ahead.
> > Here, what I can see is some problem in the groovy script, probably in
> your SchemaScript.groovy
> > I can suppose in your script you're passing AttributeInfoBuilder instead
> of AttributeInfo, so you're missing the build() method.
> > Please take as a reference the SchemaScript [1].
> >
> > [1]
> https://github.com/apache/syncope/blob/master/fit/core-reference/src/test/resources/rest/SchemaScript.groovy
> >
> > Best regards,
> > Lorenzo
> >
> >
> >
> > Il giorno mar 20 gen 2026 alle ore 23:41 Stéphane Popoff <
> stephane@spopoff.net> ha scritto:
> >>
> >> Hi Lorenzo,
> >>
> >> Thank's for the reply. I have a better result now [1] but don't
> >> understand why I also have errors when reading schema [2]. ([2] is
> >> before [1] from the same Syncope log)
> >>
> >> Best regards,
> >>
> >> Stéphane POPOFF
> >>
> >> [1] 2026-01-20 15:25:39.218 DEBUG [ Thread-6]
> >> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> >> ObjectClass: __ACCOUNT__ Method: executeQuery
> >> 2026-01-20 15:25:39.223 INFO [ Thread-6]
> >> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> >> Entering SEARCH Script Method: invoke
> >> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
> >> net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Search
> >> ok Method: executeQuery
> >> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
> >> g.identityconnectors.framework.common.objects.ResultsHandler :
> >> instance='RestAdmin' Enter: handle({Uid=Attribute: {Name=__UID__,
> >> Value=[appAdmin]}, ObjectClass=ObjectClass: __ACCOUNT__,
> >> Attributes=[Attribute: {Name=projects, Value=[projet1, projet2]},
> >> Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
> >> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
> >> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__,
> >> Value=[appAdmin]}}) Method: handle
> >> 2026-01-20 15:25:39.304
> >> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> >> [handler-409]
> g.identityconnectors.framework.common.objects.ResultsHandler
> >> : Enter: handle({Uid=Attribute: {Name=__UID__, Value=[appAdmin]},
> >> ObjectClass=ObjectClass: __ACCOUNT__, Attributes=[Attribute:
> >> {Name=projects, Value=[projet1, projet2]}, Attribute: {Name=appName,
> >> Value=[appAdmin]}, Attribute: {Name=__NAME__, Value=[appAdmin]},
> >> Attribute: {Name=__UID__, Value=[appAdmin]}], Name=Attribute:
> >> {Name=__NAME__, Value=[appAdmin]}}) Method: handle
> >> 2026-01-20 15:25:39.304
> >> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> >> [handler-409]
> g.identityconnectors.framework.common.objects.ResultsHandler
> >> : Return: false Method: handle
> >> 2026-01-20 15:25:39.304 DEBUG [ Thread-6]
> >> g.identityconnectors.framework.common.objects.ResultsHandler :
> >> instance='RestAdmin' Return: false Method: handle
> >> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
> >> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> >> ConnectorObject is built Method: processResults
> >> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
> >> org.identityconnectors.framework.spi.SearchResultsHandler :
> >> instance='RestAdmin' Enter: handleResult(SearchResult:
> >> {PagedResultsCookie=null, RemainingPagedResults=-1,
> >> AllResultsReturned=true}) Method: handleResult
> >> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
> >> org.identityconnectors.framework.spi.SearchResultsHandler :
> >> instance='RestAdmin' Return Method: handleResult
> >> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
> >> org.identityconnectors.framework.spi.operations.SearchOp :
> >> instance='RestAdmin' Return Method: executeQuery
> >> 2026-01-20 15:25:39.308
> >> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> >> [handler-409]
> org.identityconnectors.framework.api.operations.SearchApiOp
> >> : Return: SearchResult: {PagedResultsCookie=null,
> >> RemainingPagedResults=-1, AllResultsReturned=true} Method: search
> >>
> >> [2] Caused by: java.lang.ClassCastException: class
> >> org.identityconnectors.framework.common.objects.AttributeInfoBuilder
> >> cannot be cast to class
> >> org.identityconnectors.framework.common.objects.AttributeInfo
> >> (org.identityconnectors.framework.common.objects.AttributeInfoBuilder
> >> and org.identityconnectors.framework.common.objects.AttributeInfo are
> >> in unnamed module of loader
> >> org.springframework.boot.loader.launch.LaunchedClassLoader @6ce253f1)
> >> at
> org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder.addAllAttributeInfo(ObjectClassInfoBuilder.java:87)
> >> at
> org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder$addAllAttributeInfo$0.call(Unknown
> >> Source)
> >> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> >> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
> >> at
> org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:176)
> >> at
> org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:24)
> >> at
> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:176)
> >> at
> org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:174)
> >> at
> org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:178)
> >> at
> org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:344)
> >> at Script1.run(Script1.groovy:49)
> >> at
> org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory$GroovyScriptExecutor.execute(GroovyScriptExecutorFactory.java:100)
> >> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.schema(AbstractScriptedConnector.java:573)
> >> ... 28 more
> >>
> >> 2026-01-20 15:25:37.824
> >> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> >> [handler-409]
> org.identityconnectors.framework.api.operations.SearchApiOp
> >> : instan
> >>
> >>
> >> Le mar. 20 janv. 2026 à 10:54, Lorenzo Di Cola <lo...@apache.org>
> a écrit :
> >> >
> >> > Hello,
> >> > This error is coming from ConnId Framework, not from Syncope itself,
> and it is raised after your connector has returned an object, when the
> framework tries to apply the search filter.
> >> > The filter is the ConnId search filter that Syncope passes to the
> connector when it performs a search or get operation.
> >> > The filter is not configured statically. It is dynamically built by
> Syncope from:
> >> >
> >> > The operation being executed, for example: read, search, etc.
> >> > The mapping of the external resource
> >> > The attribute used as ConnId Name, for example __NAME__, __UID__
> >> >
> >> > Maybe the main question here is the last one, why the mapping is
> wrong for the filter. Please take care about your Syncope mapping
> configuration and how you're using the Connid __NAME__ and __UID__.
> >> >
> >> > HTH
> >> > Best regards,
> >> > Lorenzo
> >> >
> >> > Il giorno sab 17 gen 2026 alle ore 17:49 Stéphane Popoff <
> stephane@spopoff.net> ha scritto:
> >> >>
> >> >> Hi,
> >> >>
> >> >> When requesting a record on a Rest connector that respond with data:
> >> >>
> {"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
> >> >>
> >> >> I found in Syncope log this exception:
> >> >> Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
> >> >> {Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
> >> >> __ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
> >> >> projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
> >> >> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
> >> >> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__,
> Value=[appAdmin]}}
> >> >> was returned by the connector but failed to pass the framework
> filter.
> >> >> This seems like wrong implementation of the filter in the connector.
> >> >> at
> org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
> >> >> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
> >> >> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
> >> >> at
> org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
> >> >> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
> >> >> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
> >> >> ... 14 more
> >> >>
> >> >> My questions is about the connector filter:
> >> >> - What is attended by the filter ?
> >> >> - Where to find the configuration of that filter ?
> >> >> - Why is the external attribute appName, mapped on the internal name
> >> >> attribute is wrong for the filter ?
> >> >>
> >> >> Best regards,
> >> >>
> >> >> Stéphane POPOFF
> >> >
> >> >
> >> >
> >> > --
> >> >
> >> > --
> >> > Lorenzo Di Cola
> >> >
> >> > Software Engineer @ Tirasa S.r.l.
> >> > Viale Vittoria Colonna, 97 - 65127 Pescara
> >> > Tel +39 0859116307 / FAX +39 0859111173
> >> > http://www.tirasa.net
> >> >
> >> > Apache Syncope Committer
> >> >
> >> > Syncope PMC Member at The Apache Software Foundation
> >> >
> >> > http://people.apache.org/phonebook.html?uid=loredicola
> >
> >
> >
> > --
> >
> > --
> > Lorenzo Di Cola
> >
> > Software Engineer @ Tirasa S.r.l.
> > Viale Vittoria Colonna, 97 - 65127 Pescara
> > Tel +39 0859116307 / FAX +39 0859111173
> > http://www.tirasa.net
> >
> > Apache Syncope Committer
> >
> > Syncope PMC Member at The Apache Software Foundation
> >
> > http://people.apache.org/phonebook.html?uid=loredicola
>
--
--
Lorenzo Di Cola
Software Engineer @ Tirasa S.r.l.
Viale Vittoria Colonna, 97 - 65127 Pescara
Tel +39 0859116307 / FAX +39 0859111173http://www.tirasa.net
Apache Syncope Committer
Syncope PMC Member at The Apache Software Foundation
http://people.apache.org/phonebook.html?uid=loredicola
Re: Help needed on error with FilteredResultsHandler
Posted by Stéphane Popoff <st...@spopoff.net>.
Hi Lorenzo,
Schema and mapping are corrected now. I can propagate information from
a group to an account if I use a mapping like:
"groups[appAdmin].appName".
My question is what can I do to dynamically change, maybe by program,
the value "appAdmin" ?
Best regards,
Stéphane POPOFF
{
"key": "admin",
"connector": "019be54f-fec3-7403-b739-f82d00f6012f",
"connectorDisplayName": "RestAdmin",
"provisions": [
{
"anyType": "GROUP",
"objectClass": "__GROUP__",
"auxClasses": [
"AdminGroup"
],
"syncToken": null,
"ignoreCaseMatch": false,
"uidOnCreate": null,
"mapping": {
"items": [
{
"intAttrName": "name",
"extAttrName": "appName",
"connObjectKey": true,
"password": false,
"mandatoryCondition": "true",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "key",
"extAttrName": "key",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "groups[appAdmin].projects",
"extAttrName": "projects",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "groups[appAdmin].appName",
"extAttrName": "appName",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
}
],
"connObjectLink": null
}
},
{
"anyType": "USER",
"objectClass": "__ACCOUNT__",
"auxClasses": [
"AdminGroup"
],
"syncToken": null,
"ignoreCaseMatch": false,
"uidOnCreate": null,
"mapping": {
"items": [
{
"intAttrName": "username",
"extAttrName": "login",
"connObjectKey": true,
"password": false,
"mandatoryCondition": "true",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "appName",
"extAttrName": "appName",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "key",
"extAttrName": "key",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "login",
"extAttrName": "login",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "projects",
"extAttrName": "projects",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "BOTH",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "groups[appAdmin].appName",
"extAttrName": "appName",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
},
{
"intAttrName": "groups[appAdmin].projects",
"extAttrName": "projects",
"connObjectKey": false,
"password": false,
"mandatoryCondition": "false",
"purpose": "PROPAGATION",
"propagationJEXLTransformer": null,
"pullJEXLTransformer": null,
"transformers": []
}
],
"connObjectLink": null
}
}
],
"orgUnit": null,
"propagationPriority": 10,
"enforceMandatoryCondition": true,
"createTraceLevel": "ALL",
"updateTraceLevel": "ALL",
"deleteTraceLevel": "ALL",
"provisioningTraceLevel": "ALL",
"passwordPolicy": null,
"accountPolicy": null,
"propagationPolicy": null,
"inboundPolicy": null,
"pushPolicy": null,
"provisionSorter": null,
"authPolicy": null,
"accessPolicy": null,
"confOverrideFlag": true,
"confOverrideValue": [],
"capabilitiesOverrideFlag": false,
"capabilitiesOverrideValue": null,
"propagationActions": []
}
Le mer. 21 janv. 2026 à 10:14, Lorenzo Di Cola <lo...@apache.org> a écrit :
>
> Hi Stéphane,
>
> nice to hear you're going ahead.
> Here, what I can see is some problem in the groovy script, probably in your SchemaScript.groovy
> I can suppose in your script you're passing AttributeInfoBuilder instead of AttributeInfo, so you're missing the build() method.
> Please take as a reference the SchemaScript [1].
>
> [1] https://github.com/apache/syncope/blob/master/fit/core-reference/src/test/resources/rest/SchemaScript.groovy
>
> Best regards,
> Lorenzo
>
>
>
> Il giorno mar 20 gen 2026 alle ore 23:41 Stéphane Popoff <st...@spopoff.net> ha scritto:
>>
>> Hi Lorenzo,
>>
>> Thank's for the reply. I have a better result now [1] but don't
>> understand why I also have errors when reading schema [2]. ([2] is
>> before [1] from the same Syncope log)
>>
>> Best regards,
>>
>> Stéphane POPOFF
>>
>> [1] 2026-01-20 15:25:39.218 DEBUG [ Thread-6]
>> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
>> ObjectClass: __ACCOUNT__ Method: executeQuery
>> 2026-01-20 15:25:39.223 INFO [ Thread-6]
>> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
>> Entering SEARCH Script Method: invoke
>> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
>> net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Search
>> ok Method: executeQuery
>> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
>> g.identityconnectors.framework.common.objects.ResultsHandler :
>> instance='RestAdmin' Enter: handle({Uid=Attribute: {Name=__UID__,
>> Value=[appAdmin]}, ObjectClass=ObjectClass: __ACCOUNT__,
>> Attributes=[Attribute: {Name=projects, Value=[projet1, projet2]},
>> Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
>> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
>> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__,
>> Value=[appAdmin]}}) Method: handle
>> 2026-01-20 15:25:39.304
>> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
>> [handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
>> : Enter: handle({Uid=Attribute: {Name=__UID__, Value=[appAdmin]},
>> ObjectClass=ObjectClass: __ACCOUNT__, Attributes=[Attribute:
>> {Name=projects, Value=[projet1, projet2]}, Attribute: {Name=appName,
>> Value=[appAdmin]}, Attribute: {Name=__NAME__, Value=[appAdmin]},
>> Attribute: {Name=__UID__, Value=[appAdmin]}], Name=Attribute:
>> {Name=__NAME__, Value=[appAdmin]}}) Method: handle
>> 2026-01-20 15:25:39.304
>> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
>> [handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
>> : Return: false Method: handle
>> 2026-01-20 15:25:39.304 DEBUG [ Thread-6]
>> g.identityconnectors.framework.common.objects.ResultsHandler :
>> instance='RestAdmin' Return: false Method: handle
>> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
>> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
>> ConnectorObject is built Method: processResults
>> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
>> org.identityconnectors.framework.spi.SearchResultsHandler :
>> instance='RestAdmin' Enter: handleResult(SearchResult:
>> {PagedResultsCookie=null, RemainingPagedResults=-1,
>> AllResultsReturned=true}) Method: handleResult
>> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
>> org.identityconnectors.framework.spi.SearchResultsHandler :
>> instance='RestAdmin' Return Method: handleResult
>> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
>> org.identityconnectors.framework.spi.operations.SearchOp :
>> instance='RestAdmin' Return Method: executeQuery
>> 2026-01-20 15:25:39.308
>> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
>> [handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
>> : Return: SearchResult: {PagedResultsCookie=null,
>> RemainingPagedResults=-1, AllResultsReturned=true} Method: search
>>
>> [2] Caused by: java.lang.ClassCastException: class
>> org.identityconnectors.framework.common.objects.AttributeInfoBuilder
>> cannot be cast to class
>> org.identityconnectors.framework.common.objects.AttributeInfo
>> (org.identityconnectors.framework.common.objects.AttributeInfoBuilder
>> and org.identityconnectors.framework.common.objects.AttributeInfo are
>> in unnamed module of loader
>> org.springframework.boot.loader.launch.LaunchedClassLoader @6ce253f1)
>> at org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder.addAllAttributeInfo(ObjectClassInfoBuilder.java:87)
>> at org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder$addAllAttributeInfo$0.call(Unknown
>> Source)
>> at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
>> at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
>> at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:176)
>> at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:24)
>> at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:176)
>> at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:174)
>> at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:178)
>> at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:344)
>> at Script1.run(Script1.groovy:49)
>> at org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory$GroovyScriptExecutor.execute(GroovyScriptExecutorFactory.java:100)
>> at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.schema(AbstractScriptedConnector.java:573)
>> ... 28 more
>>
>> 2026-01-20 15:25:37.824
>> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
>> [handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
>> : instan
>>
>>
>> Le mar. 20 janv. 2026 à 10:54, Lorenzo Di Cola <lo...@apache.org> a écrit :
>> >
>> > Hello,
>> > This error is coming from ConnId Framework, not from Syncope itself, and it is raised after your connector has returned an object, when the framework tries to apply the search filter.
>> > The filter is the ConnId search filter that Syncope passes to the connector when it performs a search or get operation.
>> > The filter is not configured statically. It is dynamically built by Syncope from:
>> >
>> > The operation being executed, for example: read, search, etc.
>> > The mapping of the external resource
>> > The attribute used as ConnId Name, for example __NAME__, __UID__
>> >
>> > Maybe the main question here is the last one, why the mapping is wrong for the filter. Please take care about your Syncope mapping configuration and how you're using the Connid __NAME__ and __UID__.
>> >
>> > HTH
>> > Best regards,
>> > Lorenzo
>> >
>> > Il giorno sab 17 gen 2026 alle ore 17:49 Stéphane Popoff <st...@spopoff.net> ha scritto:
>> >>
>> >> Hi,
>> >>
>> >> When requesting a record on a Rest connector that respond with data:
>> >> {"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
>> >>
>> >> I found in Syncope log this exception:
>> >> Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
>> >> {Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
>> >> __ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
>> >> projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
>> >> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
>> >> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__, Value=[appAdmin]}}
>> >> was returned by the connector but failed to pass the framework filter.
>> >> This seems like wrong implementation of the filter in the connector.
>> >> at org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
>> >> at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
>> >> at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
>> >> at org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
>> >> at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
>> >> at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
>> >> ... 14 more
>> >>
>> >> My questions is about the connector filter:
>> >> - What is attended by the filter ?
>> >> - Where to find the configuration of that filter ?
>> >> - Why is the external attribute appName, mapped on the internal name
>> >> attribute is wrong for the filter ?
>> >>
>> >> Best regards,
>> >>
>> >> Stéphane POPOFF
>> >
>> >
>> >
>> > --
>> >
>> > --
>> > Lorenzo Di Cola
>> >
>> > Software Engineer @ Tirasa S.r.l.
>> > Viale Vittoria Colonna, 97 - 65127 Pescara
>> > Tel +39 0859116307 / FAX +39 0859111173
>> > http://www.tirasa.net
>> >
>> > Apache Syncope Committer
>> >
>> > Syncope PMC Member at The Apache Software Foundation
>> >
>> > http://people.apache.org/phonebook.html?uid=loredicola
>
>
>
> --
>
> --
> Lorenzo Di Cola
>
> Software Engineer @ Tirasa S.r.l.
> Viale Vittoria Colonna, 97 - 65127 Pescara
> Tel +39 0859116307 / FAX +39 0859111173
> http://www.tirasa.net
>
> Apache Syncope Committer
>
> Syncope PMC Member at The Apache Software Foundation
>
> http://people.apache.org/phonebook.html?uid=loredicola
Re: Help needed on error with FilteredResultsHandler
Posted by Lorenzo Di Cola <lo...@apache.org>.
Hi Stéphane,
nice to hear you're going ahead.
Here, what I can see is some problem in the groovy script, probably in your
SchemaScript.groovy
I can suppose in your script you're passing AttributeInfoBuilder instead
of AttributeInfo, so you're missing the build() method.
Please take as a reference the SchemaScript [1].
[1]
https://github.com/apache/syncope/blob/master/fit/core-reference/src/test/resources/rest/SchemaScript.groovy
Best regards,
Lorenzo
Il giorno mar 20 gen 2026 alle ore 23:41 Stéphane Popoff <
stephane@spopoff.net> ha scritto:
> Hi Lorenzo,
>
> Thank's for the reply. I have a better result now [1] but don't
> understand why I also have errors when reading schema [2]. ([2] is
> before [1] from the same Syncope log)
>
> Best regards,
>
> Stéphane POPOFF
>
> [1] 2026-01-20 15:25:39.218 DEBUG [ Thread-6]
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> ObjectClass: __ACCOUNT__ Method: executeQuery
> 2026-01-20 15:25:39.223 INFO [ Thread-6]
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> Entering SEARCH Script Method: invoke
> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Search
> ok Method: executeQuery
> 2026-01-20 15:25:39.302 DEBUG [ Thread-6]
> g.identityconnectors.framework.common.objects.ResultsHandler :
> instance='RestAdmin' Enter: handle({Uid=Attribute: {Name=__UID__,
> Value=[appAdmin]}, ObjectClass=ObjectClass: __ACCOUNT__,
> Attributes=[Attribute: {Name=projects, Value=[projet1, projet2]},
> Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__,
> Value=[appAdmin]}}) Method: handle
> 2026-01-20 15:25:39.304
> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> [handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
> : Enter: handle({Uid=Attribute: {Name=__UID__, Value=[appAdmin]},
> ObjectClass=ObjectClass: __ACCOUNT__, Attributes=[Attribute:
> {Name=projects, Value=[projet1, projet2]}, Attribute: {Name=appName,
> Value=[appAdmin]}, Attribute: {Name=__NAME__, Value=[appAdmin]},
> Attribute: {Name=__UID__, Value=[appAdmin]}], Name=Attribute:
> {Name=__NAME__, Value=[appAdmin]}}) Method: handle
> 2026-01-20 15:25:39.304
> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> [handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
> : Return: false Method: handle
> 2026-01-20 15:25:39.304 DEBUG [ Thread-6]
> g.identityconnectors.framework.common.objects.ResultsHandler :
> instance='RestAdmin' Return: false Method: handle
> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
> ConnectorObject is built Method: processResults
> 2026-01-20 15:25:39.305 DEBUG [ Thread-6]
> org.identityconnectors.framework.spi.SearchResultsHandler :
> instance='RestAdmin' Enter: handleResult(SearchResult:
> {PagedResultsCookie=null, RemainingPagedResults=-1,
> AllResultsReturned=true}) Method: handleResult
> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
> org.identityconnectors.framework.spi.SearchResultsHandler :
> instance='RestAdmin' Return Method: handleResult
> 2026-01-20 15:25:39.306 DEBUG [ Thread-6]
> org.identityconnectors.framework.spi.operations.SearchOp :
> instance='RestAdmin' Return Method: executeQuery
> 2026-01-20 15:25:39.308
> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> [handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
> : Return: SearchResult: {PagedResultsCookie=null,
> RemainingPagedResults=-1, AllResultsReturned=true} Method: search
>
> [2] Caused by: java.lang.ClassCastException: class
> org.identityconnectors.framework.common.objects.AttributeInfoBuilder
> cannot be cast to class
> org.identityconnectors.framework.common.objects.AttributeInfo
> (org.identityconnectors.framework.common.objects.AttributeInfoBuilder
> and org.identityconnectors.framework.common.objects.AttributeInfo are
> in unnamed module of loader
> org.springframework.boot.loader.launch.LaunchedClassLoader @6ce253f1)
> at
> org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder.addAllAttributeInfo(ObjectClassInfoBuilder.java:87)
> at
> org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder$addAllAttributeInfo$0.call(Unknown
> Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
> at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:176)
> at
> org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:24)
> at
> org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:176)
> at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:174)
> at
> org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:178)
> at
> org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:344)
> at Script1.run(Script1.groovy:49)
> at
> org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory$GroovyScriptExecutor.execute(GroovyScriptExecutorFactory.java:100)
> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.schema(AbstractScriptedConnector.java:573)
> ... 28 more
>
> 2026-01-20 15:25:37.824
> [operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
> [handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
> : instan
>
>
> Le mar. 20 janv. 2026 à 10:54, Lorenzo Di Cola <lo...@apache.org> a
> écrit :
> >
> > Hello,
> > This error is coming from ConnId Framework, not from Syncope itself, and
> it is raised after your connector has returned an object, when the
> framework tries to apply the search filter.
> > The filter is the ConnId search filter that Syncope passes to the
> connector when it performs a search or get operation.
> > The filter is not configured statically. It is dynamically built by
> Syncope from:
> >
> > The operation being executed, for example: read, search, etc.
> > The mapping of the external resource
> > The attribute used as ConnId Name, for example __NAME__, __UID__
> >
> > Maybe the main question here is the last one, why the mapping is wrong
> for the filter. Please take care about your Syncope mapping configuration
> and how you're using the Connid __NAME__ and __UID__.
> >
> > HTH
> > Best regards,
> > Lorenzo
> >
> > Il giorno sab 17 gen 2026 alle ore 17:49 Stéphane Popoff <
> stephane@spopoff.net> ha scritto:
> >>
> >> Hi,
> >>
> >> When requesting a record on a Rest connector that respond with data:
> >>
> {"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
> >>
> >> I found in Syncope log this exception:
> >> Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
> >> {Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
> >> __ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
> >> projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
> >> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
> >> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__, Value=[appAdmin]}}
> >> was returned by the connector but failed to pass the framework filter.
> >> This seems like wrong implementation of the filter in the connector.
> >> at
> org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
> >> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
> >> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
> >> at
> org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
> >> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
> >> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
> >> ... 14 more
> >>
> >> My questions is about the connector filter:
> >> - What is attended by the filter ?
> >> - Where to find the configuration of that filter ?
> >> - Why is the external attribute appName, mapped on the internal name
> >> attribute is wrong for the filter ?
> >>
> >> Best regards,
> >>
> >> Stéphane POPOFF
> >
> >
> >
> > --
> >
> > --
> > Lorenzo Di Cola
> >
> > Software Engineer @ Tirasa S.r.l.
> > Viale Vittoria Colonna, 97 - 65127 Pescara
> > Tel +39 0859116307 / FAX +39 0859111173
> > http://www.tirasa.net
> >
> > Apache Syncope Committer
> >
> > Syncope PMC Member at The Apache Software Foundation
> >
> > http://people.apache.org/phonebook.html?uid=loredicola
>
--
--
Lorenzo Di Cola
Software Engineer @ Tirasa S.r.l.
Viale Vittoria Colonna, 97 - 65127 Pescara
Tel +39 0859116307 / FAX +39 0859111173http://www.tirasa.net
Apache Syncope Committer
Syncope PMC Member at The Apache Software Foundation
http://people.apache.org/phonebook.html?uid=loredicola
Re: Help needed on error with FilteredResultsHandler
Posted by Stéphane Popoff <st...@spopoff.net>.
Hi Lorenzo,
Thank's for the reply. I have a better result now [1] but don't
understand why I also have errors when reading schema [2]. ([2] is
before [1] from the same Syncope log)
Best regards,
Stéphane POPOFF
[1] 2026-01-20 15:25:39.218 DEBUG [ Thread-6]
net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
ObjectClass: __ACCOUNT__ Method: executeQuery
2026-01-20 15:25:39.223 INFO [ Thread-6]
net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
Entering SEARCH Script Method: invoke
2026-01-20 15:25:39.302 DEBUG [ Thread-6]
net.tirasa.connid.commons.scripted.AbstractScriptedConnector : Search
ok Method: executeQuery
2026-01-20 15:25:39.302 DEBUG [ Thread-6]
g.identityconnectors.framework.common.objects.ResultsHandler :
instance='RestAdmin' Enter: handle({Uid=Attribute: {Name=__UID__,
Value=[appAdmin]}, ObjectClass=ObjectClass: __ACCOUNT__,
Attributes=[Attribute: {Name=projects, Value=[projet1, projet2]},
Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
{Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
Value=[appAdmin]}], Name=Attribute: {Name=__NAME__,
Value=[appAdmin]}}) Method: handle
2026-01-20 15:25:39.304
[operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
[handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
: Enter: handle({Uid=Attribute: {Name=__UID__, Value=[appAdmin]},
ObjectClass=ObjectClass: __ACCOUNT__, Attributes=[Attribute:
{Name=projects, Value=[projet1, projet2]}, Attribute: {Name=appName,
Value=[appAdmin]}, Attribute: {Name=__NAME__, Value=[appAdmin]},
Attribute: {Name=__UID__, Value=[appAdmin]}], Name=Attribute:
{Name=__NAME__, Value=[appAdmin]}}) Method: handle
2026-01-20 15:25:39.304
[operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
[handler-409] g.identityconnectors.framework.common.objects.ResultsHandler
: Return: false Method: handle
2026-01-20 15:25:39.304 DEBUG [ Thread-6]
g.identityconnectors.framework.common.objects.ResultsHandler :
instance='RestAdmin' Return: false Method: handle
2026-01-20 15:25:39.305 DEBUG [ Thread-6]
net.tirasa.connid.commons.scripted.AbstractScriptedConnector :
ConnectorObject is built Method: processResults
2026-01-20 15:25:39.305 DEBUG [ Thread-6]
org.identityconnectors.framework.spi.SearchResultsHandler :
instance='RestAdmin' Enter: handleResult(SearchResult:
{PagedResultsCookie=null, RemainingPagedResults=-1,
AllResultsReturned=true}) Method: handleResult
2026-01-20 15:25:39.306 DEBUG [ Thread-6]
org.identityconnectors.framework.spi.SearchResultsHandler :
instance='RestAdmin' Return Method: handleResult
2026-01-20 15:25:39.306 DEBUG [ Thread-6]
org.identityconnectors.framework.spi.operations.SearchOp :
instance='RestAdmin' Return Method: executeQuery
2026-01-20 15:25:39.308
[operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
[handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
: Return: SearchResult: {PagedResultsCookie=null,
RemainingPagedResults=-1, AllResultsReturned=true} Method: search
[2] Caused by: java.lang.ClassCastException: class
org.identityconnectors.framework.common.objects.AttributeInfoBuilder
cannot be cast to class
org.identityconnectors.framework.common.objects.AttributeInfo
(org.identityconnectors.framework.common.objects.AttributeInfoBuilder
and org.identityconnectors.framework.common.objects.AttributeInfo are
in unnamed module of loader
org.springframework.boot.loader.launch.LaunchedClassLoader @6ce253f1)
at org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder.addAllAttributeInfo(ObjectClassInfoBuilder.java:87)
at org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder$addAllAttributeInfo$0.call(Unknown
Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:176)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:24)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:176)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:174)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:178)
at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:344)
at Script1.run(Script1.groovy:49)
at org.identityconnectors.common.script.groovy.GroovyScriptExecutorFactory$GroovyScriptExecutor.execute(GroovyScriptExecutorFactory.java:100)
at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.schema(AbstractScriptedConnector.java:573)
... 28 more
2026-01-20 15:25:37.824
[operation.id=019bdc02-ec90-7f4b-a905-d7c8af685ed4] DEBUG
[handler-409] org.identityconnectors.framework.api.operations.SearchApiOp
: instan
Le mar. 20 janv. 2026 à 10:54, Lorenzo Di Cola <lo...@apache.org> a écrit :
>
> Hello,
> This error is coming from ConnId Framework, not from Syncope itself, and it is raised after your connector has returned an object, when the framework tries to apply the search filter.
> The filter is the ConnId search filter that Syncope passes to the connector when it performs a search or get operation.
> The filter is not configured statically. It is dynamically built by Syncope from:
>
> The operation being executed, for example: read, search, etc.
> The mapping of the external resource
> The attribute used as ConnId Name, for example __NAME__, __UID__
>
> Maybe the main question here is the last one, why the mapping is wrong for the filter. Please take care about your Syncope mapping configuration and how you're using the Connid __NAME__ and __UID__.
>
> HTH
> Best regards,
> Lorenzo
>
> Il giorno sab 17 gen 2026 alle ore 17:49 Stéphane Popoff <st...@spopoff.net> ha scritto:
>>
>> Hi,
>>
>> When requesting a record on a Rest connector that respond with data:
>> {"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
>>
>> I found in Syncope log this exception:
>> Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
>> {Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
>> __ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
>> projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
>> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
>> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__, Value=[appAdmin]}}
>> was returned by the connector but failed to pass the framework filter.
>> This seems like wrong implementation of the filter in the connector.
>> at org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
>> at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
>> at org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
>> at org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
>> at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
>> at net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
>> ... 14 more
>>
>> My questions is about the connector filter:
>> - What is attended by the filter ?
>> - Where to find the configuration of that filter ?
>> - Why is the external attribute appName, mapped on the internal name
>> attribute is wrong for the filter ?
>>
>> Best regards,
>>
>> Stéphane POPOFF
>
>
>
> --
>
> --
> Lorenzo Di Cola
>
> Software Engineer @ Tirasa S.r.l.
> Viale Vittoria Colonna, 97 - 65127 Pescara
> Tel +39 0859116307 / FAX +39 0859111173
> http://www.tirasa.net
>
> Apache Syncope Committer
>
> Syncope PMC Member at The Apache Software Foundation
>
> http://people.apache.org/phonebook.html?uid=loredicola
Re: Help needed on error with FilteredResultsHandler
Posted by Lorenzo Di Cola <lo...@apache.org>.
Hello,
This error is coming from ConnId Framework, not from Syncope itself, and it
is raised after your connector has returned an object, when the framework
tries to apply the search filter.
The filter is the ConnId search filter that Syncope passes to the connector
when it performs a search or get operation.
The filter is not configured statically. It is dynamically built by Syncope
from:
- The operation being executed, for example: read, search, etc.
- The mapping of the external resource
- The attribute used as ConnId Name, for example __NAME__, __UID__
Maybe the main question here is the last one, why the mapping is wrong for
the filter. Please take care about your Syncope mapping configuration and
how you're using the Connid __NAME__ and __UID__.
HTH
Best regards,
Lorenzo
Il giorno sab 17 gen 2026 alle ore 17:49 Stéphane Popoff <
stephane@spopoff.net> ha scritto:
> Hi,
>
> When requesting a record on a Rest connector that respond with data:
>
> {"appName":"appAdmin","key":null,"login":"appAdmin","status":"ACTIVE","projects":["projet1","projet2"],"uid":"appAdmin"}
>
> I found in Syncope log this exception:
> Caused by: java.lang.IllegalStateException: Object {Uid=Attribute:
> {Name=__UID__, Value=[appAdmin]}, ObjectClass=ObjectClass:
> __ACCOUNT__, Attributes=[Attribute: {Name=projects, Value=[projet1,
> projet2]}, Attribute: {Name=appName, Value=[appAdmin]}, Attribute:
> {Name=__NAME__, Value=[appAdmin]}, Attribute: {Name=__UID__,
> Value=[appAdmin]}], Name=Attribute: {Name=__NAME__, Value=[appAdmin]}}
> was returned by the connector but failed to pass the framework filter.
> This seems like wrong implementation of the filter in the connector.
> at
> org.identityconnectors.framework.impl.api.local.operations.FilteredResultsHandler.handle(FilteredResultsHandler.java:82)
> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$AttributesToGetSearchResultsHandler.handle(SearchImpl.java:275)
> at
> org.identityconnectors.framework.impl.api.local.operations.SearchImpl$1.handle(SearchImpl.java:145)
> at
> org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:75)
> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.processResults(AbstractScriptedConnector.java:800)
> at
> net.tirasa.connid.commons.scripted.AbstractScriptedConnector.executeQuery(AbstractScriptedConnector.java:616)
> ... 14 more
>
> My questions is about the connector filter:
> - What is attended by the filter ?
> - Where to find the configuration of that filter ?
> - Why is the external attribute appName, mapped on the internal name
> attribute is wrong for the filter ?
>
> Best regards,
>
> Stéphane POPOFF
>
--
--
Lorenzo Di Cola
Software Engineer @ Tirasa S.r.l.
Viale Vittoria Colonna, 97 - 65127 Pescara
Tel +39 0859116307 / FAX +39 0859111173http://www.tirasa.net
Apache Syncope Committer
Syncope PMC Member at The Apache Software Foundation
http://people.apache.org/phonebook.html?uid=loredicola