Hi,
first of all, glad of your interest in Apache Syncope; which version are you 
using? How (standalone, deb, Docker, Maven...)?

About documentation, please ensure to check the rendered version available at

http://syncope.apache.org/docs/2.1/reference-guide.html

or

http://syncope.apache.org/docs/2.0/reference-guide.html

if you are using 2.0.x.

Coming to your question, you want to propagate (as part of a Push Task) a user 
(bellini) including some information from his relationships, right?

In the mapping, you can  set

anyObjects[HP LJ 1300n].model

which refers to the specific Any Object with name "HP LJ 1300n" (happening to 
be a PRINTER), regardless of any relationships with the user being propagated, 
or

relationships[neighborhood][PRINTER].location

to indicate the PRINTER in "neighborhood" relationship with the user being 
propagated.

HTH
Regards.

On 18/05/20 22:42, jlawhorn wrote:
> Can anyone provide an example of using data from a related object in the 
> entity mapping using the demo data set for USER and PRINTER?
>
> I can't seem to figure out how to use attributes from a related object in a 
> resource mapping. I can add the internal attribute and it will save with no 
> errors, but when i run a push task, the logs indicate no relationship exists 
> and populates a null value on the connector. Either I'm not referencing the 
> other objects correctly, or I don't actually understand how relationships 
> work.
>
> I'm following the documentation here 
> <https://github.com/apache/syncope/blob/master/src/main/asciidoc/reference-guide/concepts/externalresources.adoc>
>  for the mapping
> I'm using this 
> <https://github.com/apache/syncope/blob/master/src/main/asciidoc/reference-guide/concepts/typemanagement.adoc>
>  for relationships.
>
> I'm using the demo data set. If I understand the relationship correctly, the 
> user "bellini" has a relationship to a printer defined via neighborhood. This 
> is the REST response for bellini:
> {
>   "@class": "org.apache.syncope.common.lib.to.UserTO",
>   "key": "c9b2dec2-00a7-4855-97c0-d854842b4b24",
>   "type": "USER",
>   "realm": "/",
>   "username": "bellini",
>   "creator": "admin",
>   "creationDate": "2010-10-20T16:00:00.000+0000",
>   "lastModifier": "admin",
>   "lastChangeDate": "2010-10-20T16:00:00.000+0000",
>   "status": "active",
>   "password": null,
>   "token": null,
>   "tokenExpireTime": null,
>   "lastLoginDate": null,
>   "changePwdDate": null,
>   "failedLogins": 0,
>   "securityQuestion": null,
>   "securityAnswer": null,
>   "suspended": false,
>   "mustChangePassword": false,
>   "dynRealms": [],
>   "auxClasses": [],
>   "plainAttrs": [
>     {
>       "schema": "cool",
>       "values": [
>         "true"
>       ]
>     },
>     {
>       "schema": "gender",
>       "values": [
>         "M"
>       ]
>     },
>     {
>       "schema": "userId",
>       "values": [
>         "[email protected]"
>       ]
>     },
>     {
>       "schema": "loginDate",
>       "values": [
>         "2009-06-24"
>       ]
>     },
>     {
>       "schema": "firstname",
>       "values": [
>         "Vincenzo"
>       ]
>     },
>     {
>       "schema": "surname",
>       "values": [
>         "Bellini"
>       ]
>     },
>     {
>       "schema": "fullname",
>       "values": [
>         "Vincenzo Bellini"
>       ]
>     }
>   ],
>   "derAttrs": [
>     {
>       "schema": "info",
>       "values": [
>         "bellini - 2010-10-20T11:00:00-0500[0]"
>       ]
>     },
>     {
>       "schema": "noschema",
>       "values": [
>         "Bellini, Vincenzo"
>       ]
>     },
>     {
>       "schema": "cn",
>       "values": [
>         "Bellini, Vincenzo"
>       ]
>     }
>   ],
>   "virAttrs": [],
>   "resources": [
>     "ws-target-resource-nopropagation"
>   ],
>   "roles": [
>     "User manager",
>     "User reviewer"
>   ],
>   "dynRoles": [],
>   "privileges": [],
>   "relationships": [
>     {
>       "type": "neighborhood",
>       "otherEndType": "PRINTER",
>       "otherEndKey": "fc6dbc3a-6c07-4965-8781-921e7401a4a5",
>       "otherEndName": "HP LJ 1300n"
>     }
>   ],
>   "memberships": [
>     {
>       "groupKey": "bf825fe1-7320-4a54-bd64-143b5c18ab97",
>       "groupName": "managingDirector",
>       "plainAttrs": [],
>       "derAttrs": [],
>       "virAttrs": []
>     }
>   ],
>   "dynMemberships": []
> }
> I created a new resource on the H2 connector based on a simple table I 
> created in the H2/testdb called PRINTERS with columns: USERNAME, MODEL. I 
> mapped userId to USERNAME and anyObjects[PRINTER].model to MODEL, set both to 
> propagate only and then ran a reconciliation push task for the user bellini. 
> In the core log I see these entries:
> 15:03:46.948 DEBUG org.apache.syncope.core.provisioning.api.MappingManager - 
> Processing expression 'anyObjects[PRINTER].model'
> 15:03:46.948 DEBUG org.apache.syncope.core.provisioning.api.MappingManager - 
> Get internal values for JPAUser[c9b2dec2-00a7-4855-97c0-d854842b4b24] as 
> 'anyObjects[PRINTER].model' on JPAExternalResource[Printers]
> 15:03:46.950 WARN  org.apache.syncope.core.provisioning.api.MappingManager - 
> No relationship for PRINTER in JPAUser[c9b2dec2-00a7-4855-97c0-d854842b4b24], 
> ignoring
> 15:03:46.950 WARN  org.apache.syncope.core.provisioning.api.MappingManager - 
> Could not determine the reference instance for anyObjects[PRINTER].model
> I also attempted to use the following values for internal attributes in the 
> mapping:
>
>   * anyObjects[neighborhood].model - same no relationship warning in logs
>   * relationships[neighborhood][PRINTER].model - will not let me save - error 
> is that it's not allowed.
>   * anyObjects["PRINTER"].model - will not let me save - error does not exist
>   * anyObjects['PRINTER'].model - will not let me save - error does not exist
>
> Here is my resource json:
> {
>   "key": "Printers",
>   "connector": "5aa5b8be-7521-481a-9651-c557aea078c1",
>   "connectorDisplayName": "H2",
>   "orgUnit": null,
>   "propagationPriority": null,
>   "randomPwdIfNotProvided": false,
>   "enforceMandatoryCondition": false,
>   "createTraceLevel": "ALL",
>   "updateTraceLevel": "ALL",
>   "deleteTraceLevel": "ALL",
>   "provisioningTraceLevel": "ALL",
>   "passwordPolicy": null,
>   "accountPolicy": null,
>   "pullPolicy": null,
>   "pushPolicy": null,
>   "overrideCapabilities": false,
>   "provisions": [
>     {
>       "key": "2c090bbd-41e6-4b23-890b-bd41e6fb2363",
>       "anyType": "USER",
>       "objectClass": "__ACCOUNT__",
>       "syncToken": null,
>       "ignoreCaseMatch": false,
>       "uidOnCreate": null,
>       "mapping": {
>         "connObjectLink": null,
>         "connObjectKeyItem": {
>           "key": "d2811a05-8595-4315-811a-0585951315ab",
>           "intAttrName": "userId",
>           "extAttrName": "USERNAME",
>           "connObjectKey": true,
>           "password": false,
>           "mandatoryCondition": "true",
>           "purpose": "PROPAGATION",
>           "propagationJEXLTransformer": null,
>           "pullJEXLTransformer": null,
>           "transformers": []
>         },
>         "items": [
>           {
>             "key": "c4e79639-79c6-46d0-a796-3979c6d6d033",
>             "intAttrName": "anyObjects[PRINTER].model",
>             "extAttrName": "MODEL",
>             "connObjectKey": false,
>             "password": false,
>             "mandatoryCondition": "false",
>             "purpose": "PROPAGATION",
>             "propagationJEXLTransformer": null,
>             "pullJEXLTransformer": null,
>             "transformers": []
>           },
>           {
>             "key": "d2811a05-8595-4315-811a-0585951315ab",
>             "intAttrName": "userId",
>             "extAttrName": "USERNAME",
>             "connObjectKey": true,
>             "password": false,
>             "mandatoryCondition": "true",
>             "purpose": "PROPAGATION",
>             "propagationJEXLTransformer": null,
>             "pullJEXLTransformer": null,
>             "transformers": []
>           }
>         ],
>         "linkingItems": []
>       },
>       "auxClasses": [],
>       "virSchemas": []
>     }
>   ],
>   "confOverride": [
>     {
>       "schema": {
>         "name": "table",
>         "displayName": "Table",
>         "helpMessage": "Enter the name of the table in the database that 
> contains the accounts.",
>         "type": "java.lang.String",
>         "required": true,
>         "order": 7,
>         "confidential": false,
>         "defaultValues": [
>           ""
>         ]
>       },
>       "overridable": true,
>       "values": [
>         "PRINTERS"
>       ]
>     },
>     {
>       "schema": {
>         "name": "keyColumn",
>         "displayName": "Key Column",
>         "helpMessage": "This mandatory column value will be used as the 
> unique identifier for rows in the table.",
>         "type": "java.lang.String",
>         "required": true,
>         "order": 8,
>         "confidential": false,
>         "defaultValues": [
>           ""
>         ]
>       },
>       "overridable": true,
>       "values": [
>         "USERNAME"
>       ]
>     }
>   ],
>   "capabilitiesOverride": [
>     "AUTHENTICATE",
>     "CREATE",
>     "UPDATE",
>     "DELETE",
>     "SEARCH",
>     "SYNC"
>   ],
>   "propagationActions": []
> }
>
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> Sent from the syncope-user mailing list archive 
> <http://syncope-user.1051894.n5.nabble.com/> at Nabble.com.


-- 
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to