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