Business Central 2023 wave 1 (BC22) new features: Shopify connector becomes extensible

Dynamics 365 Business Central

Hi, Readers.
The public preview for Dynamics 365 Business Central 2023 release wave 1 (BC22) is available. Learn more: Link.

I will continue to test and share some new features that I hope will be helpful.

Shopify connector becomes extensible:

Business value:
Tailor Shopify Connector to address the specific needs of your business.

Feature Details:
Shopify Connector has been nonextensible, but we’re changing that. We’re offering a few points of extensibility. We’ll keep the number of points to a minimum so that we can follow the rapid development on the Shopify side without introducing breaking changes.

We’re opening for extensibility for specific scenarios, based on feedback from our partners and customers. Please share your scenarios as comments to the following product suggestion: Allow extensibility of the new Shopify Connector Extension.

https://learn.microsoft.com/en-us/dynamics365/release-plan/2023wave1/smb/dynamics365-business-central/shopify-connector-becomes-extensible

With the Shopify connector, businesses can link their Shopify store (or stores) with Business Central to maximize business productivity. Using the Shopify connector, they can manage and view insights from their business and their Shopify online store as one unit. More details: What is the Microsoft Dynamics 365 Business Central Shopify connector?

Since the release of Shopify Connector feature, it has been non-extensible.
For example, table 30118 “Shpfy Order Header”

With this release (BC22), that’s finally changing.
More details: Is the Shopify connector extensible?

For example, Microsoft removed the Access = Internal property in table 30118 “Shpfy Order Header”.

First of all, Shopify Connector is a separate extension. If you want to extend it, you need to download its symbol file first.

  "dependencies": [
    {
      "id": "ec255f57-31d0-4ca2-b751-f2fa7c745abb",
      "name": "Shopify Connector",
      "publisher": "Microsoft",
      "version": "22.0.0.0"
    }
  ],

Then we can expand it.

Of course, not only tables and pages can be expanded, Microsoft also prepares many integration events.

For more details, please follow this repository on Github. Note that even though extensibility is limited, you can submit improvements directly.

Find overview of objects expected to become public in future releases (2023.03.27):

codeunit 30162 “Shpfy Order Events”

Availability date: starting with version 22.0

Exposes the following integration events:

  • OnAfterModifyShopifyOrder(var ShopifyOrderHeader: Record “Shpfy Order Header”; var OldShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnAfterNewShopifyOrder(var ShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnAfterMapCustomer(var ShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnBeforeMapShipmentMethod(var ShopifyOrderHeader: Record “Shpfy Order Header”; var Handled: Boolean)
  • OnAfterMapShipmentMethod(var ShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnBeforeMapPaymentMethod(var ShopifyOrderHeader: Record “Shpfy Order Header”; var Handled: Boolean)
  • OnAfterMapPaymentMethod(var ShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnAfterCreateItemSalesLine(ShopifyOrderHeader: Record “Shpfy Order Header”; ShopifyOrderLine: Record “Shpfy Order Line”; SalesHeader: Record “Sales Header”; var SalesLine: Record “Sales Line”)
  • OnAfterCreateSalesHeader(ShopifyHeader: Record “Shpfy Order Header”; var SalesHeader: Record “Sales Header”)
  • OnAfterCreateShippingCostSalesLine(ShopifyOrderHeader: Record “Shpfy Order Header”; ShopifyShippingCost: Record “Shpfy Order Shipping Charges”; SalesHeader: Record “Sales Header”; var SalesLine: Record “Sales Line”)
  • OnBeforeProcessSalesDocument(var ShopifyOrderHeader: Record “Shpfy Order Header”)
  • OnBeforeCreateSalesHeader(ShopifyOrderHeader: Record “Shpfy Order Header”; var SalesHeader: Record “Sales Header”; var Handled: Boolean)
  • OnBeforeCreateShippingCostSalesLine(ShopifyOrderHeader: Record “Shpfy Order Header”; ShopifyShippingCost: Record “Shpfy Order Shipping Charges”; SalesHeader: Record “Sales Header”; var SalesLine: Record “Sales Line”; var Handled: Boolean)
  • OnAfterProcessSalesDocument(var SalesHeader: Record “Sales Header”; ShopifyHeader: Record “Shpfy Order Header”)
  • OnBeforeCreateItemSalesLine(ShopifyOrderHeader: Record “Shpfy Order Header”; ShopifyOrderLine: Record “Shpfy Order Line”; SalesHeader: Record “Sales Header”; var SalesLine: Record “Sales Line”; var Handled: Boolean)

Example: Order processing

codeunit 30177 “Shpfy Product Events”

Availability date: starting with version 22.0

Exposes the following integration events:

  • OnAfterCreateItem(Shop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var Item: Record Item);
  • OnAfterCreateItemVariant(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; Item: Record Item; var ItemVariant: Record “Item Variant”);
  • OnAfterCreateProductBodyHtml(ItemNo: Code[20]; ShopifyShop: Record “Shpfy Shop”; var ProductBodyHtml: Text)
  • OnAfterFindItemTemplate(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var TemplateCode: Code[10]);
  • OnAfterGetCommaSeparatedTags(ShopifyProduct: Record “Shpfy Product”; var Tags: Text)
  • OnAfterGetBarcode(ItemNo: Code[20]; VariantCode: Code[10]; UoM: Code[10]; var Barcode: Text)
  • OnBeforeCreateItem(Shop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var Item: Record Item; var Handled: Boolean);
  • OnBeforeCreateItemVariant(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; Item: Record Item; var ItemVariant: Record “Item Variant”; var Handled: Boolean);
  • OnBeforeCreateItemVariantCode(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; Item: Record Item; var ItemVariantCode: Code[10]; var Handled: Boolean);
  • OnBeforeCreateProductBodyHtml(ItemNo: Code[20]; ShopifyShop: Record “Shpfy Shop”; var ProductBodyHtml: Text; var Handled: Boolean)
  • OnBeforeFindItemTemplate(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var TemplateCode: Code[10]; var Handled: Boolean);
  • OnBeforGetBarcode(ItemNo: Code[20]; VariantCode: Code[10]; UoM: Code[10]; var Barcode: Text; var Handled: Boolean)
  • OnBeforSetProductTitle(Item: Record Item; LanguageCode: Code[10]; var Title: Text; var Handled: Boolean)
  • OnBeforeFindMapping(Direction: enum “Shpfy Mapping Direction”; var ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; var Item: Record Item; ItemVariant: Record “Item Variant”; var Handled: Boolean);
  • OnAfterCalculateUnitPrice(Item: Record Item; VariantCode: Code[20]; UnitOfMeasure: Code[20]; ShopifyShop: Record “Shpfy Shop”; var UnitCost: Decimal; var Price: Decimal; var ComparePrice: Decimal)
  • OnBeforeCalculateUnitPrice(Item: Record Item; VariantCode: Code[20]; UnitOfMeasure: Code[20]; ShopifyShop: Record “Shpfy Shop”; var UnitCost: Decimal; var Price: Decimal; var ComparePrice: Decimal; var Handled: Boolean)
  • OnAfterUpdateItem(Shop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var Item: Record Item);
  • OnAfterUpdateItemVariant(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; Item: Record Item; var ItemVariant: Record “Item Variant”);
  • OnBeforeUpdateItem(Shop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; ShopifyVariant: Record “Shpfy Variant”; var Item: Record Item; var Handled: Boolean);
  • OnBeforeUpdateItemVariant(Shop: Record “Shpfy Shop”; ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; Item: Record Item; var ItemVariant: Record “Item Variant”; var Handled: Boolean);
  • OnBeforeSendCreateShopifyProduct(ShopifyShop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; var ShpfyTag: Record “Shpfy Tag”)
  • OnBeforeSendUpdateShopifyProduct(ShopifyShop: Record “Shpfy Shop”; var ShopifyProduct: Record “Shpfy Product”; xShopifyProduct: Record “Shpfy Product”)
  • OnBeforeSendAddShopifyProductVariant(ShopifyShop: Record “Shpfy Shop”; var ShopifyVariant: Record “Shpfy Variant”)
  • OnBeforeSendUpdateShopifyProductVariant(ShopifyShop: Record “Shpfy Shop”; var ShopifyVariant: Record “Shpfy Variant”; xShopifyVariant: Record “Shpfy Variant”)
  • OnAfterCreateTempShopifyProduct(Item: Record Item; var ShopifyProduct: Record “Shpfy Product”; var ShopifyVariant: Record “Shpfy Variant”; var ShopifyTag: Record “Shpfy Tag”)

Example: Price

Example: Product properties

codeunit 30115 “Shpfy Customer Events”

Availability date: starting with version 22.0

Exposes the following integration events:

  • OnAfterCreateCustomer(Shop: Record “Shpfy Shop”; var ShopifyCustomerAddress: Record “Shpfy Customer Address”; var Customer: Record Customer);
  • OnBeforeCreateCustomer(Shop: Record “Shpfy Shop”; var ShopifyCustomerAddress: Record “Shpfy Customer Address”; var Customer: Record Customer; var Handled: Boolean);
  • OnBeforeSendCreateShopifyCustomer(ShopifyShop: Record “Shpfy Shop”; var ShopifyCustomer: Record “Shpfy Customer”; var ShopifyCustomerAddress: Record “Shpfy Customer Address”)
  • OnBeforeSendUpdateShopifyCustomer(ShopifyShop: Record “Shpfy Shop”; var ShopifyCustomer: Record “Shpfy Customer”; var ShopifyCustomerAddress: Record “Shpfy Customer Address”; xShopifyCustomer: Record “Shpfy Customer”; xShopifyCustomerAddress: Record “Shpfy Customer Address”)
  • OnBeforeFindMapping(Direction: enum “Shpfy Mapping Direction”; var ShopifyCustomer: Record “Shpfy Customer”; var Customer: Record Customer; var Handled: Boolean);
  • OnAfterUpdateCustomer(Shop: Record “Shpfy Shop”; var ShopifyCustomer: Record “Shpfy Customer”; var Customer: Record Customer);
  • OnBeforeUpdateCustomer(Shop: Record “Shpfy Shop”; var ShopifyCustomer: Record “Shpfy Customer”; var Customer: Record Customer; var Handled: Boolean);

codeunit 30196 “Shpfy Inventory Events”

Availability date: starting with version 22.0

Exposes the following integration events:

  • OnAfterCalculationStock(Item: Record Item; ShopifyShop: Record “Shpfy Shop”; LocationFilter: Text; var StockResult: Decimal)

table 30118 “Shpfy Order Header”

Availability date: starting with version 22.0

table 30119 “Shpfy Order Line”

Availability date: starting with version 22.0

table 30130 “Shpfy Order Shipping Charges”

Availability date: starting with version 22.0

table 30116 “Shpfy Order Attribute”

Availability date: starting with version 22.0

table 30127 “Shpfy Product”

Availability date: starting with version 22.0

table 30129 “Shpfy Variant”

Availability date: starting with version 22.0

table 30105 “Shpfy Customer”

Availability date: starting with version 22.0

table 30106 “Shpfy Customer Address”

Availability date: starting with version 22.0

table 30102 “Shpfy Shop”

Availability date: starting with version 22.0

table 30104 “Shpfy Tag”

Availability date: starting with version 22.0

Enum “Shpfy Mapping Direction”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Inventory Policy”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Product Status”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Risk Level”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Processing Method”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Financial Status”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Order Fulfill. Status”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Cancel Reason”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Customer State”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Customer Import Range”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Name Source”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy County Source”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Customer Mapping”

Availability date: starting with version 22.0

Extensible = True;

Enum “Shpfy Cr. Prod. Status Value”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Remove Product Action”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy SKU Mapping”

Availability date: starting with version 22.0

Extensible = false;

Enum “Shpfy Tax By”

Availability date: starting with version 22.0

Extensible = false;

Enum 30135 “Shpfy Stock Calculation”

Availability date: starting with version 21.3

Extensible = true;

Example

END

Hope this will help.

Thanks for reading.

ZHU

コメント

Copied title and URL