cancel
Showing results for 
Search instead for 
Did you mean: 

Cloud Hotfolder for ClassificationAttribute uses wrong order

11-18-2025 2:40 AM
serdar_dere_ex Explorer
318 views 0 comments
0 Likes
SAP Managed Tags
Labels
Hotfolderimages
Subscribe

Hello there,

I have troubles for few days now to create a hot-folder.xml file to enable upload of an image, creation of an container and assign this to a classificationAttribute and classificationAttributeValue.

Therefore I created 3 csv files: myCVMedia-01.csv, myCVMediaContainer-02.csv and myCVMediaContainerOnFeature-03.csv (same with CA for ClassificationAttribute)

For some reason it does not work properly, I guess the order the files are loaded is messed up and I run into issues like: content of myCVMediaContainer-02.csv (not myCVMediaContainerOnFeature-03.csv) is being used to update a ClassificationAttributeValue with container instead of creating a container. (got similar pronlem with content of 02 trying to generate images)

Here is my XML (have the same for CA)

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:file="http://www.springframework.org/schema/integration/file"
       xmlns:int="http://www.springframework.org/schema/integration"
       xsi:schemaLocation="http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
		http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" ref="hotfolderInboundFileChannelMappings"/>
        <property name="targetMethod" value="put"/>
        <property name="arguments">
            <list>
                <bean class="java.util.regex.Pattern" factory-method="compile">
                    <constructor-arg value="${cloud.hotfolder.cv.mapping.file.name.pattern}" />
                </bean>
                <ref bean="batchFilesCloudHotFolderCVProc"/>
            </list>
        </property>
    </bean>

    <int:channel id="batchFilesCloudHotFolderCVProc"/>
    <int:service-activator input-channel="batchFilesCloudHotFolderCVProc" output-channel="batchFilesHeaderInit"
                           ref="cloudHotFolderCVHeaderSetupTask" method="execute" />

    <!-- Setup Header by applying required properties -->
    <bean id="cloudHotFolderCVHeaderSetupTask" class="de.hybris.platform.acceleratorservices.dataimport.batch.task.HeaderSetupTask">
        <property name="catalog" value="${cloud.hotfolder.cv.mapping.header.catalog}" />
        <property name="net" value="${cloud.hotfolder.cv.mapping.header.net}" />
        <property name="storeBaseDirectory" ref="baseDirectoryCloudHotFolder" />
    </bean>

    <!-- Transformer converters mappings -->
    <bean id="myCloudHotFolderCVMediaConverterMapping"
          class="de.hybris.platform.acceleratorservices.dataimport.batch.converter.mapping.impl.DefaultConverterMapping">
        <property name="mapping" value="myCVMedia"/>
        <property name="converter" ref="myCloudHotFolderCVMediaConverter"/>
    </bean>

    <bean id="myCloudHotFolderCVMediaContainerConverterMapping"
          class="de.hybris.platform.acceleratorservices.dataimport.batch.converter.mapping.impl.DefaultConverterMapping">
        <property name="mapping" value="myCVMediaContainer"/>
        <property name="converter" ref="myCloudHotFolderCVMediaContainerConverter"/>
    </bean>

    <bean id="myCloudHotFolderMedia2CVConverterMapping"
          class="de.hybris.platform.acceleratorservices.dataimport.batch.converter.mapping.impl.DefaultConverterMapping">
        <property name="mapping" value="myCVMediaContainerOnFeature"/>
        <property name="converter" ref="myCloudHotFolderMedia2CVConverter"/>
    </bean>

    <!-- Converters -->
    <bean id="myCloudHotFolderCVMediaConverter" parent="abstractDefaultImpexConverter">
        <property name="header">
            <value>
                #{cvMediaImpexHeader}
                INSERT_UPDATE MediaFolder;qualifier[unique=true];path[unique=true]
                ;$mediafolder;$mediafolder

                # Import media from remote file system
                INSERT_UPDATE Media;mediaFormat(qualifier);code[unique=true];mime[default='image/jpeg'];$catalogVersionCV;folder(qualifier)[default=$mediafolder];realfilename;@media[translator=de.hybris.platform.impex.jalo.media.MediaDataTranslator]
            </value>
        </property>
        <property name="impexRow" value=";master;{+0};;;;{+1};$importFolder/{+1}"/>
        <property name="type" value="Media"/>
    </bean>

    <bean id="myCloudHotFolderCVMediaContainerConverter" parent="abstractDefaultImpexConverter">
        <property name="header">
            <value>
                #{cvMediaImpexHeader}
                # Import media container
                INSERT_UPDATE MediaContainer;qualifier[unique=true];$catalogVersionCV;medias(code, $catalogVersionCV);conversionGroup(code)
            </value>
        </property>
        <property name="impexRow">
            <value>;{0};;{+1};productMediaConversionGroup</value>
        </property>
        <property name="type" value="MediaContainer"/>
    </bean>

    <bean id="myCloudHotFolderMedia2CVConverter" parent="abstractDefaultImpexConverter">
        <property name="header">
            <value>
                #{cvMediaImpexHeader}
                # Import ClassificationAttributeValue media
                UPDATE ClassificationAttributeValue;code[unique=true];$images;$classSystemVersion
            </value>
        </property>
        <property name="impexRow">
            <value>;{+0};{1};</value>
        </property>
        <property name="type" value="ClassificationAttributeValue"/>
    </bean>

    <bean id="cvMediaImpexHeader" class="java.lang.String">
        <constructor-arg>
            <value>
                UPDATE GenericItem[processor = de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor]; pk[unique = true]
                $catalogVersionCV=catalogversion(catalog(id[default=myProductCatalog]),version[default='Online'])[unique=true]
                $importFolder=file:$BASE_SOURCE_DIR$/images
                $classSystemVersion=systemVersion(catalog(id[default='myClassification_001']), version[default='1.0'])[unique=true, default='myClassification_001:1.0']
                $images=cpqMedia(qualifier, $catalogVersionCV)
                $mediafolder=$config-cloud.hotfolder.cv.images.media.folder.qualifier
            </value>
        </constructor-arg>
    </bean>
</beans>

Thanks for any kind of help

0 Likes

Accepted Solutions (0)

Answers (0)