Platform API: Changes to the Image Processor Modules of the Shopify and BigCommerce Connectors

In previous versions of MYOB Acumatica, the image processor modules of the Shopify and BigCommerce connectors retrieved the image details for the Product Image entity by using the BC-ItemImages generic inquiry. In some cases, this implementation led to a timeout error on the Sync History (BC301000) and Prepare Data (BC501000) forms.

In MYOB Acumatica 2025.1, this behavior has been modified. Now the image processor modules of the Shopify and BigCommerce connectors retrieve the image details for the Product Image entity by using a BQL query. As a result, the BC-ItemImages generic inquiry has been removed from the code base.

Updating Customizations That Depend on the BC-ItemImages Generic Inquiry

Because the BC-ItemImages generic inquiry has been removed from the code base, developers must update their customization projects if they previously customized the BC-ItemImages generic inquiry. To customize the BQL query that now replaces the BC-ItemImages generic inquiry, a developer must implement the PX.Commerce.Objects.IImageDataProvider interface and all of its methods.

The IImageDataProvider interface consists of the following methods:

  • FetchCommand PrepareCommand(List<BCSyncStatus> ids, TGraph processorGraph): This method specifies a base BQL query to fetch the image details for the Product Image entity. Developers can specify additional conditions for this BQL query in the following SelectByIds and Select methods.
  • IEnuemrable<ItemImageDetails> SelectByIds(List<BCSyncStatus> ids, TGraph processorGraph): This method, which specifies a list of sync IDs, is called during the syncing process on the Sync History (BC301000) and Process Data (BC501500) forms. This method fetches the image details for the Product Image entity by calling the PrepareCommand method.
  • IEnuemrable<ItemImageDetails> Select(TGraph processorGraph): This method does not specify any sync IDs and is called from the Prepare Data (BC501000) form. The method fetches the image details for the Product Image entity by calling the PrepareCommand method.

A developer can specify a custom BQL query that fetches the image details for the Product Image entity in their implementation of the FetchCommand PrepareCommand(List<BCSyncStatus> ids, TGraph processorGraph) method. The following code shows an example.

public override FetchCommand PrepareCommand(List<BCSyncStatus> ids, 
    BCImageProcessor processorGraph)
{
    // Define the custom BQL query in the following line
    BqlCommand baseQuery = ...;

    var prepareMode = processorGraph.Operation.PrepareMode;
    var connectorType = processorGraph.Operation.ConnectorType;
    var bindingId = processorGraph.Operation.Binding;
    List<object> parameters = new() {
        connectorType,bindingId, BCEntitiesAttribute.ProductImage,
        connectorType, bindingId,
        BCEntitiesAttribute.Variant,
        connectorType, bindingId,
        BCSyncStatusAttribute.Synchronized,
        BCSyncStatusAttribute.Synchronized
      };
    return AddFilterConditions(ids, processorGraph, baseQuery, parameters);
}