Product Approval allows products that meet the quality requirements (e.g., completeness of product information, images etc.) of the merchant to be reviewed and approved before publishing to the eCommerce site.
The key features that have been introduced are:
The initial status of the product when the product approval is enabled (there is no entry in table
Product Import and the creation of a new product sets the approval status to Edit (there is no entry in table
|In Review||A product approval status that shows that the product data has been modified|
A product approval status that shows that the product data modifications has been accepted
The initial status of the product on a Live system when the product approval is enabled
Intershop provides two access privileges that are involved in the product approval process - Product Approver and Catalog and Product Manager.
The Product Approver is responsible for managing and approving of the product data. The Product Approver has the rights to set the approval status of the product data to Approved or to restore it back to Edit.
The Approver does not have the permission to change the approval status to In Review.
The Catalog & Product Manager is responsible for the enrichment of the product data. The Catalog & Product Manager has the rights to change the approval status of the product either to Edit or to In Review and does not have to right to approve products.
The access privileges that are mentioned above are visualized in the following picture:
Initially Product Approval functionality is disabled and all the features connected to it are hidden. Enabling of the feature happens by a channel preference in the Preferences tab.
When the Commerce Management application user enables the Product Approval Domain Preference from the section Product Editing and Product Approval for the corresponding sales channel a job is run that sets the product approval status to all the products in the channel. When the back office user disables the Product Approval Domain Preference, another job is started and it deletes the product approval status entries in the sales channel.
The General Product Approval job is accessible in the SLDSystem domain in System Management application.
This job is a non - recurring System Management application job. It is executed in all sales channels of all sales organizations and is dependent on whether the product approval preference is enabled in a sales channel. The job iterates all the products in a channel. If there is no product approval entry for a product, a new one with status Edit is created. If the product is in Approved state and there has been change either in the products' standard, custom or variation attributes, the product approval status is updated to Edit.
In case there is a data replication environment and the context is the Live system, the initial status that sets this job to all products in all channel is Approved.
The DomainRelatedProductApprovalStatusJob job functions exactly the same way as the General Product Approval job but it is run only for a particular sales channel and creates the necessary records in the database only for the corresponding sales channel. While, as mentioned above, the General Product Approval Job creates entries for the products in all sales channels of all sales organizations.
The DomainRelatedProductApprovalStatusJob job is accessible in the desired channel domain in the System Management application.
The DomainRelatedProductApprovalStatusDeleteJob job is run when the back office user disables the Product Approval feature from the Preference menu. This job deletes all the corresponding Product Approval database records for the selected sales channel.
The job is available for the according channel domain in the System Management application.
For a detailed overview of all jobs available for ICM 7.8, please refer to Reference - Intershop 7.8 Jobs.
The Advanced product search is extended in order the Commerce Management application user to be able to find products according to their approval status.
A new product approval call parameter is implemented in the following queries: GetProductsByAdvancedSearch.query and GetSharedProductsByAdvancedSearch.query
<query> <parameters> ... <parameter name="Approval" type="java.lang.Integer" optional="true"/> ... </parameters>
A new Approval field has been added in the Product Status section of the Advanced Search in the Commerce Management application:
Product bulk operations provide an easy way to perform actions on a set of products or on all products. A bulk operation for modifying the approval status of the products has also been added to the list of available bulk actions.
On the image below you can see the products list and the buttons used for selecting a bulk operation - Edit Selected and Edit All.
The Step 1: Select Action dialog allows to select the bulk action that is responsible for changing the approval status of the products - Update Product Approval Status:
The availability of the Update Product Approval Status bulk action depends on the preference for Product Approval (Channel Preferences > Product Editing and Product Approval).
The Step 2: Update Product Approval Status shows the step where the Commerce Management application user can change the product approval status. The available option values in the New Status select box are depending on the access privileges of the user:
The Step 3: Update Product Status - Confirm action displays the batch process parameters and affected items. The new approval status that all the affected items will have after the batch process finishes is displayed in the New row of the Action Parameters table:
Click Finish to start the Update Product Status bulk operation:
After the batch process has finished a view shows the status of the process and gives access to the log information:
If the batch process finishes successfully, the approval status of the affected items will be updated.
Instead of using the Product List Page you may also use the Labels view to run bulk operations on products which have been labeled before.
The link Edit All in the Labels list allows to run bulk operations on all items with a given label (here A-Data products).
Click Edit All. The rest of the workflow matches the one in the Product List Page (see above).
In the product detail page the Product and Catalog Manager and the Product Approver can manage the approval status of a single product. The approval status information and buttons are available in the General tab of the product detail page. Like in the product list, the two types of users have different permissions and thus see different product approval buttons.
When the approval status is changed via the Back to editing button, a pop-up window is opened asking for a reason. The Reason pop-up window is available for both user roles.
If the product approval status is set back to Edit a message will be displayed in the General tab of the product detail page. This message will name the person who wrote the reason (who rejected the product data), the time stamp and the reason.
Product hash calculation is used for comparing changes in product data in the Product Approval jobs. The current product hash value is calculated applying a hash function on a concatenated string formed by product standard, variation and custom attributes. This calculation can be extended or altered by creating a new
ProductBOApprovalExtension implementation and registering it in component framework to replace the standard one.
The Product Approval status by default is not indexed by the product search index so it is not assigned to the Indexed Attributes section of the search indexes in the Commerce Management application. However it is available for including in the product search index from the Available Attributes section.
In order to pass the product approval data to the product search index, a new data provider ProductApprovalDataProvider has been implemented. Currently ProductApprovalDataProvider retrieves data only for products with approval status Approved. Therefore only approved products will be indexed and only approved products will be displayed in the storefront respectively.
The data provider and the
ProductApproval attribute are defined in the search index configuration file - SFProductSearch.solr.xml:
<dataProviders> ... <dataProvider name="ProductApproval" className="com.intershop.component.product.internal.searchindex.dataprovider.ProductApprovalDataProvider" /> </dataProviders>
<attributes> <attribute> <description>Adds a condition for approved products only</description> <displayName>Product Approval</displayName> <name>ApprovalStatus</name> <searchable>false</searchable> <standard>false</standard> <dataProviderName>ProductApproval</dataProviderName> </attribute> </attributes>
During the replication process a staging processor decorator
is used to handle the search indexes. It is used to adjust not approved products and their related entities on a post replication hook (
onPostPublicationHook) phase and to update product search indexes on post completion live hook (
onPostCompletionLiveHook) phase. The search index on the live system is updated with changed or deleted products.
The following cartridges contain product approval code artifacts:
Interfaces for product approval related extensions, repositories and business objects
Implementation of product approval related data provider and pipelets
|bc_product_orm||Queries, extensions, factories, business objects and product approval job|
|init_operations||Product approval job configuration|
|bc_mvc||Stored procedure and staging decorator|
|sld_system_app||Job for SLDSystem domain|
|sld_ch_consumer_plugin||Channel related product approval jobs, UI related templates, pipelines and JS|
|sld_enterprise_app||Product approval widget and product advanced search related artifacts|
|Approval||com.intershop.component.product.capi.approval.ProductBOApprovalExtension||Responsible for specific operations related to the approval process of the products|
|ProductApprovalBORepository||com.intershop.component.product.capi.approval.ProductApprovalBORepositoryExtension||Responsible for the life cycle of the product approval business object|
|CreateProductApproval||Creates a new ProductApprovalBO instance for the provided ProductBO|
|UpdateProductApproval||Updates the provided ProductApprovalBO. Sets product data, approval status, last change reason, last change date, user ID|
|RemoveProductApproval||Removes the provided ProductApprovalBO instance|
|GetProductApproval||Retrieves ProductApprovalBO instance for the provided ProductBO|
|HandleProductApproval||Handles the product approval status in parallel. If there is no an approval status for the product then the default approval status is set. If there is an approval status for the product and the status is ProductApprovalBOEnum.APPROVED then the product hash is calculated and compared with the persisted one in order to determine if there is a change in the product. If they mismatched then a the approval status is set to ProductApprovalBOEnum.EDIT.|
|ProcessProductApprovalJob - SetProductApprovalStatus|
Iterates all products for the provided DomainID, for each product checks if there is an approval status for it. If such does not exist, creates one with value Edit. If such exists with value Approved and there is
a change in its newly calculated hash, sets its approval status to Edit.
|ProcessProductApprovalJob - DeleteProductApprovalStatus||Iterates all products for the provided DomainID, for each product checks if there is an approval status for it and if such exists, removes it|
|ProcessProductApprovalJob - StartProductApprovalStatusJob|
Starts Product Approval Status job with the provided job configuration parameters
|ProcessProductApproval - SendToReview||Sets the approval status to In Review|
|ProcessProductApproval - Approve||Sets the approval status to Approved|
|ProcessProductApproval - BackToEditing||Sets the approval status to Edit|
Product Approval feature enhances
FullDomainSpecificStagingProcessor with another decorator -
It is used to adjust not approved products and their related entities on post replication phase and to update product search indexes on post completion live hook phase. The decorator itself only prepares products to update search index for and delegates its business functionality to a stored procedure called sp_remove_unapproved_products.
Product Approval feature introduces additional specifics when data replication processes are considered. Only approved products and product related data should be transferred from an edit to a live system.
During Mass Data Replication:
Not approved products which exist only in the edit system, are not transferred to live system.
Assume there are products in a channel of the edit system, which were shared from the master repository and overwritten and set to an unapproved state in the context of the channel. Please note, doing so will not suppress the product replication of the master repository's "original" product to the master repository of the production system. Since the product is shared to the channel but not overwritten in the context of the channel the "original" product will appear in the channel of the production system.
Both edit and live systems in a data replication environment should have the same value for Product Approval domain preference before starting replication process.
The product prices staging group cannot be used separately from the products staging group in the staging process. The products group contains the set of tables from product prices, so only the products group should be used.
Publish to Live System button on product details page is available only if the product is in state APPROVED. In products list page, the button is always available, but only APPROVED products among the selected ones, are transferred to the live system. This is also true for Replicate Products to another Intershop 7 cluster mass data task.
Fore more technical information, refer to section Concept - Product Approval.
The Product Approval Status Widget displays products with the corresponding approval status. The user can select the desired status from a drop-down list:
When the Еdit status is selected, a Reason column is displayed in the widget:
The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.