Info
This concept is valid from ICM version 7.10.31.0.
This document describes the integration of Cloudinay CDN in ICM 7.10.31.0
This includes collecting images and ZIP archives containing images from external sources (e.g.: SFTP) supported by the Guide - Transport Framework (valid to 7.10) and copying them to a temporary location of the ICM shared file system (SFS).
From there the images get uploaded to the Cloudinary CDN space. In the last step the images get assigned to products.
Furthermore, this document describes how to set up the SMC job and the Transport Framework in the Intershop Organization Management for different scenarios and different image locations.
ICM | Intershop Commerce Management |
CDN | Content Delivery Network |
SMC | Intershop System Management |
Image View | Part of the Image Management which describes usually the perspective (point of view) from which the image of a product is taken (front, back, side, zoom, etc.), see Concept - Image Framework and related documents for details. |
Image Type | Part of the Image Management which contains image width and height, image source (Internal, External, Cloudinary) and the prefix used as common part of an image URL. |
SFS | Shared file system of Intershop Commerce Management |
To set up an ICM image server, a Cloudinary CDN account is required.
This can be either an existing account or an account provided by Intershop.
The following data is required for the setup:
This information is used to access the account and store images or other data.
The configuration can be done either with properties or database preferences. These are retrieved via the Configuration Framework or stored in a Managed Service configuration.
It is possible to have a configuration for an organization that is shared to all channels or to have an individual configuration for each channel.
The following section deals with Image Types and related settings, specifically in the Cloudinary Context.
A new image type source called Cloudinary was introduced. This image type source is used for everything related to Cloudinary-CDN:
To show images in storefront pages, the image types 'S', 'M' and 'L' are used in various isml templates.
To enable all Cloudinary-related functionality, the image types must use 'Cloudinary' as Source.
Furthermore, these image types and associated image views must be configured as described in Concept - Image Framework.
Note
The Cloudinary managed service or Cloudinary properties configuration must be enabled as well (see Configuration with Managed Service) to:
The image type prefix contains the commonly used first part of each image URL. The last part of the image URL is the image base name which is stored when the image is assigned to a product or category.
Example for a complete image URL with Cloudinary: https://res.cloudinary.com/intershop-cdn/h_270,w_270/inSPIRED/08154714_front.jpg.
Note
The image type prefix is optional and can be left empty. If left empty, the Cloudinary managed service or Cloudinary properties configuration must be available and enabled.
The Cloudinary account data will be used to resolve the prefix part of the image URL. If the configuration is not available and Cloudinary is enabled, the image URLs cannot be resolved!
If the prefix is left empty, the performance to resolve the image URLs will be slower.
The following table explains each part of the prefix used for the example:
https://res.cloudinary.com/intershop-cdn/h_270,w_270/q_auto/
Part of the Prefix | Explanations | Notes and Options |
---|---|---|
res.cloudinary.com | The host name associated with your Cloudinary data | Provided with the Cloudinary account |
intershop-cdn | The cloud name (see Cloudinary configuration) | Provided with the Cloudinary account |
h_270,w_270 | The width and height of the image to be provided | Optional, optimizes transferred data so the image is not larger as necessary |
q_auto | Cloudinary parameter which automatically optimizes image compression | Optional, other options are for example: q_auto:eco, q_80 (see Cloudinary documentation) |
This section describes how to configure Cloudinary via properties files for two different scenarios.
The configuration framework allows to place properties for a specific domain like: 'inSPIRED' or 'inSPIRED-inTRONICS'.
For this scenario, two properties files are required. One for the organization and one for the channel to enable sharing the organization's configuration.
This describes the setup for the Organization and the sharing to individual channels.
The basic access data to the Cloudinary CDN account must be provided here. This is required to access the Cloudinary API and stored image files.
intershop.image.server.configuration.available=true intershop.image.server.configuration.cloud_name=<cloud-name-from-cloudinary-account> intershop.image.server.configuration.api_key=<api-key-from-cloudinary-account> intershop.image.server.configuration.api_secret=<api-secret-from-cloudinary-account>
Example:
intershop.image.server.configuration.available=true intershop.image.server.configuration.cloud_name=intershop-cdn intershop.image.server.configuration.api_key=7337XXXXXXXXXXX intershop.image.server.configuration.api_secret=6OKQXXXXXXXXXXXXXXXXXXXXXXX
Here is the configuration to use the configuration of the organization in the channel as well.
intershop.image.server.configuration.available=true intershop.image.server.configuration.share_from_active=true intershop.image.server.configuration.share_from_domain=<domain-name-of-the-organization>
Example:
intershop.image.server.configuration.available=true intershop.image.server.configuration.share_from_active=true intershop.image.server.configuration.share_from_domain=inSPIRED
This describes an individual setup for the channel that works independently of the organization.
With multiple Channels in ICM, some channels can use the organization's setup and some channels can use their own.
The basic access data to the Cloudinary CDN account must be provided here. This is required to access the Cloudinary API and store image files for the Channel.
intershop.image.server.configuration.available=true intershop.image.server.configuration.cloud_name=<cloud-name-from-cloudinary-account> intershop.image.server.configuration.api_key=<api-key-from-cloudinary-account> intershop.image.server.configuration.api_secret=<api-secret-from-cloudinary-account>
Example:
intershop.image.server.configuration.available=true intershop.image.server.configuration.cloud_name=intershop-cdn-channel-1 intershop.image.server.configuration.api_key=7337XXXXXXXXXXX intershop.image.server.configuration.api_secret=6OKQXXXXXXXXXXXXXXXXXXXXXXX
Another way to configure Cloudinary CDN image server is to use a managed service.
To use an available managed service (e.g. an image server), it must be activated for the use in an organization in Intershop Organization Management (Operations back office).
Then it can be created and configured for the organization and its channels - as a shared service and as an individual service, individually for each channel.
To activate the Cloudinary CDN Service, perform the following steps:
The Cloudinary managed service can be set up for the organization (e.g. inSPIRED) and can optionally be shared to channels (e.g. inTRONICS) and applications below.
The domain (e.g. inSPIRED or inSPIRED-inTRONICS) in which the managed service is created, relates to the folders used when uploading images to Cloudinary and for the image product assignments.
In case the Cloudinary managed service is not visible, it has to be activated for your sales Organization, see Activation - Cloudinary CDN Image Server Managed Service.
If the Cloudinary managed service is visible create the new service with configurations like this.
The first (top) part of the configuration contains login data from the Cloudinary account used.
Full Cloudinary Service Configuration Example
The transport framework provides the means to copy (pull) images from an external SFTP Server and store them in the SFS for further processing, e.g. for image upload and assignments. There are several possibilities to get images into the SFS via the transport framework, such as E-Mail, Azure, etc. These can be configured, see Guide - Transport Framework (valid to 7.10).
The 'images' folder in the SFS is used as temporary container before the images get uploaded onto Cloudinary-CDN and removed from SFS when all steps are successfully done.
The Transport Configuration TransportProcessID and the domain (Unit) for which it was created (e.g.: inSPIRED-MasterRepository or inSPIRED-inTRONICS) are later required in the Job configuration.
Images can be located in and used for organization (e.g.: inSPIRED) and channel (e.g.: inTRONICS). If both (organization and channel) are required, an individual configuration for both is necessary.
To view or create a transport configuration for the inSPIRED organization, choose inSPIRED-MasterRepository as Domain and click Apply.
For information on creating a new transport configuration, refer to Organization Management Online Help | Transport Framework | Creating a New Configuration
The following sections show an example configuration for the organization:
Configuration - Remote Location Settings, Authentication Settings, Transfer Settings
To view or create a transport configuration for the inTRONICS-channel, choose inSPIRED-inTRONICS as Domain and click Apply.
For information on creating a new transport configuration, refer to Organization Management Online Help | Transport Framework | Creating a New Configuration.
The following sections show an example configuration for the channel:
A job that triggers and performs the pull from SFTP, the upload to Cloudinary-CDN and the product image assignment process must be created in Intershop System Management.
For general information on creating a new scheduled job, refer to Intershop System Management Online Help | Schedules | Creating New Scheduled Jobs.
Use the following data:
Provide the following data in the General tab:
The Application is set to the organization or the channel (e.g.: inSPIRED-Site / enterprise (default) or inSPIRED-Site / inTRONICS )
In the Attributes-Tab - the TransportProcessID, TransportUnitName and UnitName must be configured for all the Jobs pipelines steps to work properly.
Furthermore, it is possible to provide an optional parameter FileExtensions. This can be configured to overwrite the default values of handled file extensions.
ZIP archives containing images will be automatically extracted into the same images SFS folder and then processed like all other images.
Note
The order in which the files are processed cannot be guaranteed, that means images in ZIP archives might replace image files with the same name.
Not having *.zip in the list of file extensions, will prevent zip archives from being processed.
Note
The automatic assignment only works if the image file names handled match the following pattern: <product-sku-the-image-must-be-assigned-to>_<imageView-existing-in-ICM>.<image-file-extension>.
The following table shows some configuration details and recommended values:
Attribute Name | Description | Context | Recommended Values for Context |
---|---|---|---|
TransportProcessID | ProcessID from Transport FW config | might be different, but must not | |
TransportUnitName | domain of the Transport FW config | org / channel | inSPIRED-MasterRepository / inSPIRED-inTRONICS |
UnitName | defined by 'Local file system location' of Transport FW config | org / channel | inSPIRED / inSPIRED-inTRONICS |
FileExtensions | space separated file extensions; default: '*.jpg *.png *.zip' | org / channel | optional |
The configuration UnitName and its Domain object is used in several places:
/server/share/sites/inSPIRED-Site/units/inSPIRED/impex/src/images
- resolved actual SFS folder${IS_SHARE}/sites/${SITE_NAME}/units/${UNIT_NAME}/impex/src/images
- possible, see Transport Framework SetupinSPIRED/
<product-sku>_<image-view-id>.jpginSPIRED/
<product-sku>_<image-view-id>.jpginSPIRED/
2015784_front.jpgThe following section shows an example configuration in Intershop System Management for both, organization and channel:
Organization | |
---|---|
Channel |
Organization | Channel |
---|---|
Organization | Channel |
---|---|
The following section, describes what the job does exactly:
The following diagrams show a simplified process as well as the full process of Cloudinary uploads.
The processing of zip archives containing images is not shown in either diagram. However, they are extracted and the contained images are also processed.
This diagram also contains the error handling:
This section provides in-depth configuration details for an individual setup.
This includes example parameters for the organization shared to all channels as well as individual configurations for each channel.
This setup is to be used for the organization and shared and activated for the channels.
TransportFW | |
---|---|
Create for Domain | inSPIRED-MasterRepository - The domain of the Organizations-Repositoy the TransportFW is used for |
SFS location | ${IS_SHARE}/sites/${SITE_NAME}/units/inSPIRED/impex/src/images |
SFS location - result | /IS/server/share/sites/inSPIRED-Site/units/inSPIRED/impex/src/images |
SFS location - note | 'inSPIRED' is the name of the organization your TransportFW configuration is used for: ${UNIT_NAME} instead of 'inSPIRED' would result in: /IS/server/share/sites/inSPIRED-Site/units/inSPIRED-MasterRepository/impex/src/images This would be problematic for the SMC-Job-Setup and the Pipelets used in the Job-Pipeline. |
Remote location settings | Most likely SFTP with the port, host, remote folder; other locations: 'EMAIL, HTTP, FTP, Azure File Storage' are possible |
Authentication settings | Authentication data for your SFTP server and the authentication method login/password or a key |
Transfer settings | Transport direction: Pull, alternatively Push and Delete the files on the SFTP after download |
Managed Service for Cloudinary CDN - Image Server | |
---|---|
Create for Domain | inSPIRED - The domain of the organization the managed service is used for |
Sharing-Tab | Shared and active - sharing to channels, as default the channels will use the shared service configuration |
Configuration-Tab | Cloud name, API Key and Secret are all part of the used Cloudinary account. |
SMC - Job | |
---|---|
Create for Domain | inSPIRED - The domain of the Organizations the SMC Job is used for |
General-Tab | Application: inSPIRED-Site / enterprise (default) Pipeline: ImageImportJob Startnode: UploadWithSFTP |
Attributes-Tab | UnitName - The domain name where the images are used in (organization), e.g.: inSPIRED TransportUnitName - The domain where the SFTP transport is created in, e.g.: inSPIRED-MasterRepository TransportProcessID - The ID of the SFTP transport configuration, e.g.: Cloudinary-SFTP-download |
Folders used in Organization and Channel | Folders Example |
---|---|
SFS | /IS/server/share/sites/inSPIRED-Site/units/inSPIRED/impex/src/images |
Cloudinary portal directory | inSPIRED - implicit used for upload to Cloudinary |
Product image assignments | inSPIRED/<image-name> |
Note | inSPIRED-Site and inSPIRED are placeholders for your organization's domain. |
TransportFW | |
---|---|
create for Domain | inSPIRED-inTRONICS - The domain of the channel the TransportFW is used for |
SFS location | ${IS_SHARE}/sites/${SITE_NAME}/units/${UNIT_NAME} /impex/src/images |
SFS location - result | /IS/server/share/sites/inSPIRED-inTRONICS-Site/units/inSPIRED-inTRONICS/impex/src/images |
SFS location - note | inSPIRED-inTRONICS is the name of the channel your TransportFW configuration is used for |
Remote location settings | Most likely SFTP with the port, host, remote folder; other locations: 'EMAIL, HTTP, FTP, Azure File Storage' are possible |
Authentication settings | Authentication data to your SFTP server and the authentication method login/password or a key |
Transfer settings | Transport direction: Pull, alternatively Push and Delete the files on the SFTP after download or not |
Managed Service for Cloudinary CDN - Image Server | |
---|---|
Create for Domain | inSPIRED-inTRONICS - the domain of the channel the managed service is used for |
Sharing-Tab | Shared and active - sharing to applications, as default the applications will use the shared service configuration |
Configuration-Tab | Cloud name, API Key, Secret are all part of the used Cloudinary account. |
SMC - Job | |
---|---|
Create for Domain | inSPIRED-inTRONICS - The domain of the Channel the SMC Job is used for |
General-Tab | Application - inSPIRED-Site / inTRONICS Pipeline - ImageImportJob Startnode - UploadWithSFTP |
Attributes-Tab | UnitName - The domain name where the images are used in (channel), e.g.: inSPIRED-inTRONICS TransportUnitName - The domain where the SFTP transport is created in, e.g.: inSPIRED-inTRONICS TransportProcessID - The ID of the SFTP transport configuration, e.g.: Cloudinary-SFTP-download-for-channel |
Folders Used for in Channel | folders example |
---|---|
SFS | /IS/server/share/sites/inSPIRED-inTRONICS-Site/units/inSPIRED-inTRONICS/impex/src/images |
Cloudinary Portal Directory | inSPIRED-inTRONICS - implicit used for upload to Cloudinary |
Product Image Assignments | inSPIRED-inTRONICS/<image-name> |
Note | inSPIRED-inTRONICS-Site and inSPIRED-inTRONICS are placeholders for your channel's domain. |