![No UI](https://img.shields.io/static/v1?label=UI&message=none&color=inactive) Novomind iPIM Connect is a CELUM extension which allows you to synchronize previews, IDs, URLs and asset metadata from CELUM to novomind iPIM. In the other direction you can synchronize the product structure including attribute values from novomind iPIM to CELUM. This enables you to search for product assets in CELUM by PIM attributes like e.g. EAN, brand or color. ## 1. Requirements + novomind iPIM V4.4 + CELUM 5.13.4 ## 2. Installation ### novomind iPIM + Create an API user and note down the credentials ### CELUM + Place the provided novomind iPIM Connect jar file in *home/appserver/lib/* + Create a root node for the novomind iPIM product hierarchy. It is recommended to create a new node type for this. + Create a new text information field 'hierarchyIdentifier' and assign it to the node type of the product hierarchy root node. + Set at least the required properties (see [section below](#properties)) in *home/appserver/conf/custom.properties* + Restart CELUM appserver ## 3. Configuration ### Properties To be configured in {home}/appserver/conf/custom.properties #### API Credentials ##### novomindConnector.api.baseUrl > type: String, **required: yes**, default: - The REST API base URL of your novomind iPIM instance e.g. `novomindConnector.api.baseUrl=https://yourcompany-ipim.novomind.com/iPIM/rest/api` ##### novomindConnector.api.clientId > type: String, **required: yes**, default: - The client ID of the novomind iPIM API key e.g. `novomindConnector.api.clientId=1` ##### novomindConnector.api.username > type: String, **required: yes**, default: - The name of the novomind iPIM API user e.g. `novomindConnector.api.username=user_name` ##### novomindConnector.api.password > type: String, **required: yes**, default: - The password of the novomind iPIM API user e.g. `novomindConnector.api.password=password` #### Other mandatory properties ##### novomindConnector.license > type: String, **required: yes**, default: - The license for Novomind Connect provided by brix IT Solutions e.g. `novomindConnector.license=B3Kj3MbcupVIF/zHV2fn0uwmjRpaQ4YcynIjENCxA0l4ncLRYyUZwubIhXKpgW/+baPziK` ##### novomindConnector.informationFieldId.hierarchyIdentifier > type: Number, **required: yes**, default: - The ID of the newly created node information field (see [above](#celum)) This is a technical information field for storing identifier data needed by the sync algorithm. It is recommended to hide it for all users (except super users) via role configuration. e.g. `novomindConnector.informationFieldId.hierarchyIdentifier=205` ##### novomindConnector.hierarchySync.rootNodeId > type: Number, **required: yes**, default: - The ID of the root node of the product hierarchy synchronized from novomind iPIM e.g. `novomindConnector.hierarchySync.rootNodeId=17362` #### Optional API properties The provided default values should be fine for most cases. ##### novomindConnector.api.pageLimit > type: Number, required: no, default: 200 The maximum number of records returned per API request e.g. `novomindConnector.api.pageLimit=50` Consider decreasing this value if you experience request timeouts. The maximum value supported by the novomind iPIM API is 200. ##### novomindConnector.api.connectTimeout > type: Number, required: no, default: 10 Timeout in seconds for establishing a connection to the novomind iPIM API e.g. `novomindConnector.api.connectTimeout=10` ##### novomindConnector.api.readTimeout > type: Number, required: no, default: 300 (5 minutes) Timeout in seconds when reading data from the novomind iPIM API e.g. `novomindConnector.api.readTimeout=300` ##### novomindConnector.api.writeTimeout > type: Number, required: no, default: 600 (10 minutes) Timeout in seconds when writing data to the novomind iPIM API e.g. `novomindConnector.api.writeTimeout=600` #### Task Properties ##### novomindConnector.hierarchySync.taskGroup > type: String, required: no, default: Novomind Connect The name of the CELUM task group for the synchronisation tasks. e.g. `novomindConnector.hierarchySync.taskGroup=novomind:connect` ##### novomindConnector.hierarchySync.taskName.fullSync > type: String, required: no, default: Hierarchy Full Sync The name of the CELUM task which synchronizes the novomind iPIM structure into CELUM (Full Sync). e.g. `novomindConnector.hierarchySync.taskName.fullSync=Full Synchronisation` ##### novomindConnector.hierarchySync.taskCron.fullSync > type: String, required: no, default: - A [Quartz cron expression](http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html) for scheduling the full sync task. If you leave this property empty, the task will only run when started manually via CELUM System Tasks. e.g. `novomindConnector.hierarchySync.taskCron.fullSync=0 0 6/12 * * ?` ##### novomindConnector.hierarchySync.taskName.deltaSync > type: String, required: no, default: Hierarchy Delta Sync The name of the CELUM task which synchronizes the novomind iPIM structure into CELUM (Delta Sync). e.g. `novomindConnector.hierarchySync.taskName.deltaSync=Delta Synchronisation` ##### novomindConnector.hierarchySync.taskCron.deltaSync > type: String, required: no, default: - A [Quartz cron expression](http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html) for scheduling the delta sync task. If this property is left empty, the task will only run when started manually via CELUM System Tasks. e.g. `novomindConnector.hierarchySync.taskCron.deltaSync=0 0 0-5,9-17,21-23 * * ?` ##### novomindConnector.hierarchySync.errorMailRecipients > type: List of Strings (comma-separated), required: no, default: - List of e-mail addresses which will receive an error report in case of failure of a synchronisation task. e.g. `novomindConnector.hierarchySync.errorMailRecipients=marketing@example.com,it@example.com` #### Export Properties ##### novomindConnector.export.triggerOnDirectAssignment > type: Boolean, required: no, default: true Whether to trigger exports to novomind iPIM when an asset is directly assigned to a novomind iPIM hierarchy node. e.g. `novomindConnector.export.triggerOnDirectAssignment=false` ##### novomindConnector.export.triggerFieldId > type: Number, required: no, default: - The ID of a node-referencing information field which refers to the synchronized novomind iPIM product hierarchy. If this property is set, exports to novomind iPIM are triggered when the configured information field is updated on an asset. e.g. `novomindConnector.export.triggerFieldId=235` ##### novomindConnector.export.clearTriggerFieldOnMoveToTrashbin > type: Boolean, required: no, default: true Whether to clear the [configured trigger information field](#novomindconnectorexporttriggerfieldid) when an asset is moved to the trash bin. By default, no metadata is removed when an asset is moved to the trashbin. With this property set to true, the configured trigger field is cleared when an asset is moved to the trashbin, which will consequently trigger removal of the exported asset data from novomind iPIM. e.g. `novomindConnector.export.clearTriggerFieldOnMoveToTrashbin=true` ##### novomindConnector.export.considerAssetAvailability > type: Boolean, required: no, default: false Whether to consider asset availability status for exports. If this property is set to true, exports to novomind iPIM will only be triggered if the availability status of the asset is 'active'. Furthermore, an already exported asset will be removed from novomind iPIM when its availability status changes to 'inactive'. e.g. `novomindConnector.export.considerAssetAvailability=true` #### Example Configuration ``` #### novomind iPIM Connector #### novomindConnector.license={provided by brix} # API credentials novomindConnector.api.baseUrl=https://yourcompany-ipim.novomind.com/iPIM/rest/api novomindConnector.api.clientId=1 novomindConnector.api.username=celum_api novomindConnector.api.password=secure_password!!!11 # ID of the node information field for storing the hierarchy identifier novomindConnector.informationFieldId.hierarchyIdentifier=301 # ID of the root node of the product hierarchy synchronized from novomind iPIM novomindConnector.hierarchySync.rootNodeId=1736 # run full sync every saturday at 1 am novomindConnector.hierarchySync.taskCron.fullSync=0 0 1 ? * SAT # run delta sync every 4 hours novomindConnector.hierarchySync.taskCron.deltaSync=0 0 0/4 * * ? # send error report on sync task failure novomindConnector.hierarchySync.errorMailRecipients=marketing@example.com,it@example.com # don't trigger exports when an asset is directly assigned to a product node novomindConnector.export.triggerOnDirectAssignment=false # trigger exports when a product node is assigned via node referencing field with ID 195 novomindConnector.export.triggerFieldId=195 # clear this information field when an asset is moved to the trash bin novomindConnector.export.clearTriggerFieldOnMoveToTrashbin=true # only export 'active' assets to novomind iPIM and remove 'inactive' ones novomindConnector.export.considerAssetAvailability=true ``` ## 4. Usage + Login into CELUM + Start the hierarchy synchronisation task + The configured structure will be set up in CELUM + Add assets to the product hierarchy + The information will be synchronized to novomind iPIM ## 5. Recommended ### brix extension Carbon Copy If there are mappings of data from novomind iPIM to CELUM, they will be written on the information field of the product node. To copy them from the node to all assigned assets, we recommend using our extension [Carbon Copy](https://docs.brix.ch/celum_extensions/carbon_copy). ### brix extension Asset Marker If you like to see which assets are used in novomind iPIM in general, we recommend using our extension [Asset Marker](https://docs.brix.ch/celum_extensions/asset_marker). ## Compatibility Matrix | CELUM | novomind iPIM | Novomind Connect | :----- | :----- | :----- | 5.13.4 - 6.6 | 4.4 | coming soon ## Release Notes coming soon...