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.