Il giorno 16/apr/2013, alle ore 11.33, Maarten Winkels ha scritto:

> Hello,
> 
> We're currently developing a new connector with the connid framework. We run 
> into some question on how the conn if connector API is used by Syncope.
> 
> Implementing and integrating the create method was very simple: We can see 
> account being provisioned to the resource.
> 
> Question 1:
> Syncope seems (however) not to use the delete method correctly if the 
> connector doesn't implement the SearchOp interface: First the current data is 
> requested using the search operation and ONLY if this returns a 
> ConnectorObject the delete is executed. If the SearchOp is not implemented or 
> returns NULL, Syncope silently ignores the delete operation.

Hi Maarten, yes this is the current behavior: Syncope search for user (collect 
profile), then remove it if exists, and search again (collect new profile - 
empty if deleted).
The two searches are currently used to report differences between before and 
after op.
> 
> <code 
> location="org.apache.syncope.core.propagation.impl.AbstractPropagationTaskExecutor:287">
>             // Try to read remote object (user / group) BEFORE any actual 
> operation
>             beforeObj = getRemoteObject(task, connector, false);
> </code>
> 
> <code 
> location="org.apache.syncope.core.propagation.impl.AbstractPropagationTaskExecutor:234">
>         if (beforeObj == null) {
>             LOG.debug("{} not found on external resource: ignoring delete", 
> task.getAccountId());
>         } else {...
> </code>
> 
> Can this behaviour be configured?

This behavior cannot be cunfigured. You can change it only overriding methods.

> 
> Question 2:
> The resource assigns it's own id's, based on the location of the account in 
> the tree. The connector returns the created ID as a Uid to Syncope. When 
> deleting the account from Syncope, the assigned Uid is not used, but only the 
> "Syncope-ID" is provided to the connector to delete the account.
> How should the connector retrieve the assigned ID?

This is a configuration error: accountLink (if not empty) or AccountId (if 
accountLink is empty) will always used as __NAME__ attribute; __UID__ attribute 
will be propagated with AccountId value.

Regards,
F.

Reply via email to