Concept - Product Approval

1 Introduction

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:

  • Product Approval is available on channel level
  • Preference for enabling/disabling the Product Approval feature
  • Two access privileges are involved in the product approval process
  • The following product approval statuses are available: Edit, In Review, Approved
  • Improvement of the Advanced Product Search in order to search for products in defined Product Approval status
  • Bulk actions to update the Product Approval status
  • Product Approval Status job
  • Product Approval in the Search Indexes
  • Staging mechanism for Product Approval
  • Product Approval Status Widget

1.1 References

2 Business Overview

2.1 Available statuses

StatusDescription
Edit

The initial status of the product when the product approval is enabled (there is no entry in table productapproval)

Product Import and the creation of a new product sets the approval status to Edit (there is no entry in table productapproval)

In Review  A product approval status that shows that the product data has been modified
Approved

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

2.2 Product Approval User Roles

Intershop provides two access privileges that are involved in the product approval process - Product Approver and Catalog and Product Manager.

2.2.1 Product Approver

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.

2.2.2 Catalog and Product Manager

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.

2.3 Product Approval Transitions

The access privileges that are mentioned above are visualized in the following picture:

3 Functionality

3.1 Preference

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.

3.1.1 Product Approval Preference Jobs

3.1.1.1 General Product Approval Job

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.

3.1.1.2 DomainRelatedProductApprovalStatusJob

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.

3.1.1.3 DomainRelatedProductApprovalStatusDeleteJob

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.

3.2 Product Approval Status in Advanced Product Search

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:

3.3 Bulk Operations

3.3.1 In Product List Page

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:

Note

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.

3.3.2 In Labels

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).

3.4 Product Approval in Product Detail Page

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.

3.5 Hash Calculation

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.

3.6 Search Indexes

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:

SFProductSearch.solr.xml
<dataProviders>
	...
	<dataProvider name="ProductApproval" className="com.intershop.component.product.internal.searchindex.dataprovider.ProductApprovalDataProvider" />
</dataProviders>
SFProductSearch.solr.xml
 <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 RemoveUnapprovedProductsDecorator  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.

4 Technical Overview

4.1 Related Cartridges

The following cartridges contain product approval code artifacts:

CartridgeDescription
bc_product

Interfaces for product approval related extensions, repositories and business objects

Implementation of product approval related data provider and pipelets

bc_product_ormQueries, extensions, factories, business objects and product approval job
init_operationsProduct approval job configuration
bc_mvcStored procedure and staging decorator
sld_system_appJob for SLDSystem domain
sld_ch_consumer_pluginChannel related product approval jobs, UI related templates, pipelines and JS
sld_enterprise_appProduct approval widget and product advanced search related artifacts

4.2 Extensions

Extension IDInterfaceDescription
Approvalcom.intershop.component.product.capi.approval.ProductBOApprovalExtensionResponsible for specific operations related to the approval process of the products
ProductApprovalBORepositorycom.intershop.component.product.capi.approval.ProductApprovalBORepositoryExtensionResponsible for the life cycle of the product approval business object

4.3 Useful Pipelets and Pipelines

Pipelet nameDescription
CreateProductApprovalCreates a new ProductApprovalBO instance for the provided ProductBO
UpdateProductApprovalUpdates the provided ProductApprovalBO. Sets product data, approval status, last change reason, last change date, user ID
RemoveProductApprovalRemoves the provided ProductApprovalBO instance
GetProductApprovalRetrieves ProductApprovalBO instance for the provided ProductBO
HandleProductApprovalHandles 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.
Pipeline nameDescription
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 - DeleteProductApprovalStatusIterates 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 - SendToReviewSets the approval status to In Review
ProcessProductApproval - ApproveSets the approval status to Approved
ProcessProductApproval - BackToEditingSets the approval status to Edit

4.4 Staging Processor Decorator

Product Approval feature enhances FullDomainSpecificStagingProcessor with another decorator - RemoveUnapprovedProductsDecorator.

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.

5 Data Replication Process

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.

5.1 Mass Data Replication

During Mass Data Replication:

  1. Not approved products which exist only in the edit system, are not transferred to live system.

    Note

    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.

  2. Changes made in edit system of not approved products which exist on both, edit and live, are not transferred to live system.
  3. Approved products which exist only in the edit system, are transferred to the live system.
  4. Changes made in edit system of approved products which exist both on edit and live system, are transferred to the live 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.

5.2 Business Object Replication

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.

6 Product Approval Status Widget

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:

Disclaimer

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.

Customer Support
Knowledge Base
Product Resources
Support Tickets