Project

General

Profile

Actions

Task #2856

closed

LRT for code list synchronization

Added by Roman Kučera almost 3 years ago. Updated almost 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Roman Kučera
Target version:
Start date:
06/16/2021
Due date:
% Done:

100%

Estimated time:
Owner:

Description

Now there is no option how to synchronize code list into IdM automatically.

This task will use system definition. It's required to have the right configuration and schema.
Then you can choose this system in LRT config and data is loaded via connector facade.

This approach is better for configuration and when sync of code list will became native in product, then you need to add mapping and sync into already existed system.


Files

csvcodelist.zip (25.3 KB) csvcodelist.zip Tomáš Doischer, 06/22/2021 06:55 AM
Actions #1

Updated by Roman Kučera almost 3 years ago

Actions #2

Updated by Roman Kučera almost 3 years ago

  • % Done changed from 70 to 90

Test implemented, line coverage 83%

Actions #3

Updated by Roman Kučera almost 3 years ago

  • Status changed from In Progress to Needs feedback
Actions #4

Updated by Roman Kučera almost 3 years ago

  • Assignee changed from Roman Kučera to Tomáš Doischer
Actions #5

Updated by Roman Kučera almost 3 years ago

Must be released also for 10.X IdM

Actions #6

Updated by Tomáš Doischer almost 3 years ago

The code looks good, I've found no issues.

I've tested the LRT with a CSV system and it failed with exception:

java.lang.UnsupportedOperationException: Operation Synchronization is not supported. Use reconscilation instead!
    at eu.bcvsolutions.idm.connectors.csv.CSVConnConnector.sync(CSVConnConnector.java:113)
    at org.identityconnectors.framework.impl.api.local.operations.SyncImpl.sync(SyncImpl.java:137)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.identityconnectors.framework.impl.api.local.operations.ConnectorAPIOperationRunnerProxy.invoke(ConnectorAPIOperationRunnerProxy.java:98)
    at com.sun.proxy.$Proxy527.sync(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.identityconnectors.framework.impl.api.local.operations.ThreadClassLoaderManagerProxy.invoke(ThreadClassLoaderManagerProxy.java:96)
    at com.sun.proxy.$Proxy527.sync(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.identityconnectors.framework.impl.api.BufferedResultsProxy$BufferedResultsHandler.run(BufferedResultsProxy.java:165)

The CSV I'm using is really simple but I think it should be sufficient:

item
number1
number2
number3

The exported system is attached.

I also really think the documentation should be extended a little bit. The configuration of the LRT is simple and its description is sufficient but I'd expect to see a bit more information about the system configuration.

Also, a more nice-to-have feature would be the ability to select whether you want to create, update or delete items during synchronization. Whether or not you implement it is up to you but the code is structured nicely, so this should be really easy to implement.

Actions #7

Updated by Tomáš Doischer almost 3 years ago

  • Status changed from Needs feedback to In Progress
  • Assignee changed from Tomáš Doischer to Roman Kučera
Actions #8

Updated by Roman Kučera almost 3 years ago

@doischert The connector must support sync operation. I tried to load the data from system in other ways but it caused more complications (incomplete date). This info is added to docs.
https://wiki.czechidm.com/devel/documentation/modules_extras/sync_code_list_items

I also added more info how to prepare the system for this LRT so hopefully it's OK now.

Actions #9

Updated by Tomáš Doischer almost 3 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 90 to 100

Thank you, LGTM.

Actions #10

Updated by Peter Štrunc almost 3 years ago

Merged to develop. Thanks guys

Actions

Also available in: Atom PDF