CSM Core 4.8.2025092627.221326 September 26, 2025 Features & Functionality Listing Template...
CSM-Core Release Notes - 4.9.2026040628.268822
CSM Core 4.9.2026040628.268822
Released: May 11, 2026
Overview
Version 4.9 of CSM-Core introduces a comprehensive B2B automation framework for synchronizing Companies, Contacts, Locations, and Role Assignments with connected channel systems.
This release also delivers an interface-driven architecture for Sales Channel Type loading, a refactored listing availability calculation engine, and a wide range of improvements to product listing, media handling, and CSM Company management.
Added
-
B2B Automation: New Types, Subtypes, and Role Center Integration
-
Introduces new 'CSM API Automation Subtype' enum values for B2B operations: Get Company Contacts, Get Locations, Send Company, Send Contact, Send Location, Send Company Status, and Send Role Assignment.
-
Adds dedicated automation subtype codeunits for each B2B operation, each implementing the 'CSMProcessAPIAutomationForSubtype' interface with success/failure return values.
-
Adds a Status Requires Update field on the CSM Company record to track when a company record must be pushed to the channel.
-
Adds a Run B2B Automation action to the Role Center, allowing users to trigger B2B sync processes directly from the home screen.
-
Raise new integration events 'OnProcessAutomationOnBeforeProcessB2BAutomationForSubtype' and 'OnProcessAutomationOnAfterProcessB2BAutomation' for partners to intercept or extend B2B automation processing.
-
-
Sales Channel Type Interface Pattern for Per-Type Loading
-
This feature introduces three new interfaces on the 'CSMCORE Sales Channel Type' enum: 'CSMSChTypLoadExec' (Execution Module), 'CSMSChTypLoadAPISet' (API Set), and 'CSMSChTypLoadAPIAuto' (Automation).
- Each interface has default and unknown fallback implementations, ensuring graceful handling when no implementation is provided.
- Adds Setup API Set, Setup Execution Module, and Setup Automation actions to the Sales Channel card under the Load Defaults group.
- Adds a Load CSM Application action to the SENAPI Application list page extension.
- 'LoadAutomationForSalesChannel' and 'OnLoadAPIEngineAPISet' are deprecated with 'CLEAN26' preprocessor guards to maintain backward compatibility during the transition
-
-
Auto-Import Customer Contacts and Locations upon BC Customer Validation
- When a BC Customer No. is validated on a CSM Company record, users are prompted to automatically create CSM Company Contacts and Locations from the Business Central Customer's contacts and ship-to addresses
- Presents a dialog with options: All Contacts & Locations, Selected Contacts and Locations, or None
- Applies only in GUI contexts, ensuring background processes are not affected
-
Register Core Value Processing Functions on Install
-
CSM Core Utility Value Processing Functions are now automatically registered during CSM installation via 'RegisterCoreValueProcessingFunctionMethod()' in the Install codeunit.
-
The CSM Setup record record is also initialized on install if not already present.
-
-
Listing Availability Calculation: Dedicated Codeunit with Error Isolation
-
Listing availability calculation logic has been refactored into a dedicated 'CSM Calc Listing Availability' codeunit (ID 70338290)
-
Supports two modes: Basic Availability (single inventory location) and Advanced Availability (per-location percentage and threshold rules)
-
A companion 'CSM Listing Availability Events' codeunit centralizes integration event definitions, allowing partners to intercept calculations without modifying core logic
-
Error isolation ensures a calculation failure for one listing does not block processing of other listings.
-
-
Core Media Utility Public Functions
- 'CSMMediaUtilityFunctions' codeunit now exposes common media utility functions as public procedures, enabling channel apps to reuse image handling logic without duplicating code.
-
Sales Channel Default Weight Unit for Listings
-
A Default Weight Unit field has been added to the CSM Sales Channel record and is used to pre-populate the Weight Unit on new Listings created for that Sales Channel, ensuring consistency across all listings for a given channel.
-
-
Added Missing Application Operations
- 'GETORDERTAXES' and several additional application operations are now included in the Core API Engine Dataload, ensuring they are available from a clean install without requiring manual configuration.
Updated
-
B2B Contact Role Assignment: Automatic Single-Role API Calls
-
When a Contact Role Name is selected on the CSM Company Contact Location Roles page, the system now automatically triggers a single-role API call to either assign or revoke and reassign the role on the channel, eliminating the need for a separate manual sync step
-
Introduces 'SendSingleCompanyContactRoleAssignment' procedure in 'CSM B2B Management' codeunit, with overloads for both page-action and automation contexts
-
Automatically selects the correct execution modifier (insert vs. modify) based on whether the External ID is already populated.
-
-
Core Listing Management Support Improvements
-
'SENAPISendProductChildren' now creates API Message Parameters for child listings and their listing attributes, enabling channel apps to receive structured child data.
-
Core Value Processing functions for Listing Price and Weight now work for both parent and child CSM Listings
-
'OnAfterSubmitProductImageToChannelOperation' integration event now fires for each product image sent rather than once after all images complete, allowing per-image processing.
-
New 'OnSubmitProductImagesToChannel_OnAfterFilterCSMProductInformation' event enables filtering of product images before they are sent to the channel.
-
New table keys added to 'CSM Item Attribute Option' and 'CSM Listing Attribute' tables to improve query performance
-
Core Value Processing 'GetParameterRecord' procedures changed from local to internal scope, enabling reuse across extensions
-
-
Product Information Improvements for Lookup and Image Handling
- Product Information List page now uses the CSM Name field as the primary display field; a key has been added to the 'CSM Product Information' table to improve lookup performance
- When importing a Product Info image, the system now automatically sets the file name on the record
- When the image filename is blank, the system now defaults the filename to Item No. + file extension, preventing unnamed image records
-
CSM Data Export: Validate, Modify, and Insert Trigger Fields
- The CSM Data Load Codeunit Generator now exports fields that participate in Validate, Modify, and Insert triggers, ensuring that channel-app-generated codeunits properly handle field validation logic during data import operations.
-
WooCommerce Refactor Core Support Additions
- New API operation 'GETATTRIBUTEOPTIONS' added to the core operation set, enabling retrieval of attribute option values from a channel
- New generic 'GetParameterRecord' function allows any codeunit to retrieve a BC record from an API parameter by record ID
- Expanded set of Value Processing functions in 'CSMSENAPIValueProcessFunc' to support a wider range of data mapping scenarios
- CSM Setup data export now includes Password Placeholder values and Application Operation Automation information, making exported configurations more complete.
-
Improved CSM Order Filtering for API Engine Automations
- Adds new 'Uninitialized' value to 'CSM BC Order Status' and 'NA' value to 'CSM Order Status' to distinguish "no filter intent" from an explicit status value, enabling automations to be configured without requiring all status fields to be populated.
-
API Engine Send Listing Image: Updated Event and GraphQL Compatibility
- The 'OnBeforeSENAPISendListingImageToChannel' integration event has been replaced with a new version that includes additional parameters, improving extensibility of image-sending operations
- The previous event is obsoleted with a 'CLEAN26' preprocessor guard to maintain backward compatibility
- 'IsSuccessStatusCode' changed to 'IsSuccessful' to support GraphQL-based API responses in addition to REST HTTP responses
-
Load Defaults Visibility Control on Sales Channel Page
- The Load Defaults action group on the CSM Sales Channel page is now hidden by default and can be exposed programmatically by channel apps using the new 'SetVisibilityCoreLoadDefaultsGroup' procedure.
-
API Engine Dependency Updated to 1.21.0.0
- CSM Core now requires API Engine version 1.21.0.0 or later. Ensure the API Engine extension is updated before or alongside this CSM Core release.
-
SEN Common Minimum Version Updated to 2.12
- The minimum required version of the SEN Common library has been increased to 2.12. Ensure the SEN Common extension meets this minimum version requirement before installing this release.
Fixed
-
Name Field Left Blank on CSM Company Location
When a CSM Company Location was created from a BC Customer or Ship-To Address, the Name field was left blank. The fix ensures the Name is populated from the source BC record in both the Customer and Ship-To Address location type implementations.
-
BC Ship-To Addresses Not Displaying on CSM Company
A filtering condition in the CSM Company table prevented BC Ship-To Addresses from appearing in the related lookup. The extraneous filter has been removed and Ship-To Addresses now display correctly.
- BC Customer No. Validation Feedback on CSM Company
The validation logic for BC Customer No. on a CSM Company record has been tightened to provide accurate feedback and prevent unnecessary field modifications when the value has not changed.
-
Duplicate Address Field Captions on CSM Company Location Lists
Multiple address fields on the CSM Company Location List and CSM Company Locations Subpage shared the same caption, causing confusion when viewing or filtering records. Unique, descriptive captions have been assigned to each address field.
-
CSM Item Attribute Refresh from Item Variation Options
When refreshing CSM Item Attributes from Item Variation Options, the refresh included options from all attributes rather than filtering to only the options linked to the specific CSM Item Attribute. The filter is now correctly applied.
-
Primary Contact No. Set to Blank in GetCustomer
The 'GetCustomer' routine was incorrectly handling the Primary Contact No. field. The field is now correctly set to blank when appropriate to prevent unintended contact assignments during template-based customer creation.
-
Removed GETORDERS from Core API Engine Dataload
The 'GETORDERS' API operation was included in the Core API Engine Dataload but is channel-specific and should not be part of the core set. It has been removed to prevent incorrect configuration during installation.