Skip to main content

Changelog

All notable changes to the Bestway CSM API Toolkit extension are documented in this file. For detailed change documents, see the linked files below.

[1.2.0.0] - 2026-03-05

Change Document: CHANGE-v1.2.0.0.md

Added

  • Posted Svc. Invoice Header API (Page 56123) — read-only API exposing posted service invoice headers with CSM Quality Sent and Location Code fields for Failed CSM Submissions Resolver workflow
  • itemNo and salesDate computed fields on Posted Svc. Invoice Line API (Page 56121) — looked up from Service Item record via existing CsmApiHelper procedures
  • Subpage expansion on Posted Svc. Invoice Header API — $expand=postedServiceInvoiceLines returns invoice lines for the header
  • fileUrls computed field on Posted Svc. Invoice Header API — JSON array of Link-type Record Link URLs (photos/files) attached to the invoice, matching the format used by the Innovia CSM Quality submission
  • GetRecordLinkUrlsJson procedure on CSM API Helper (Codeunit 56104) — retrieves Link-type Record Link URLs for a given record and returns them as a JSON array
  • GetServiceItemFields combined procedure on CSM API Helper (Codeunit 56104) — retrieves both Item No. and Sales Date from a Service Item in a single database read
  • Test codeunit Posted Inv. Header API Test (56115) — 6 automated tests covering GetRecordLinkUrlsJson (URL retrieval, empty results, Note-type exclusion) and GetServiceItemFields (combined lookup, blank handling)

Fixed

  • GetRecordLinkUrlsJson now filters by Type = Link, excluding Note-type Record Links that contain no URL data

Changed

  • GetRecordLinkUrlsJson signature accepts RecordId directly instead of Code[20], eliminating a redundant full-table Get on Service Invoice Header per row
  • Posted Svc. Invoice Line API and Service Order Line API now use combined GetServiceItemFields procedure, reducing Service Item lookups from 2 per row to 1

[1.1.0.0] - 2026-03-02

Change Document: CHANGE-v1.1.0.0.md

Added

  • Fault Area API (Page 56105) — read-only API exposing the Fault Area table for FAQ sync validation
  • Symptom Code API (Page 56106) — read-only API exposing the Symptom Code table for FAQ sync validation
  • Fault Code API (Page 56107) — read-only API exposing the Fault Code table for FAQ sync validation
  • Resolution Code API (Page 56108) — read-only API exposing the Resolution Code table for FAQ sync validation
  • Fault Resol. Relation API (Page 56109) — read-only API exposing the Fault/Resolution Code Relationship table for hierarchy validation
  • FA Symptom Relation API (Page 56120) — read-only API exposing the custom Fault Area/Symptom Code Relationship table (50113)
  • Posted Svc. Invoice Line API (Page 56121) — read-only API exposing posted service invoice lines for data safety testing
  • Posted Svc. Shipment Line API (Page 56122) — read-only API exposing posted service shipment lines for data safety testing
  • Extension-level telemetry via Application Insights connection string in app.json

Changed

  • Migrated changelog to two-tier format (docs/CHANGELOG.md + docs/CHANGE-v{version}.md)
  • Reorganized AL files into type-based subfolders (Codeunit/, Page/) with .{ObjectType}.al suffix convention
  • Removed legacy root-level CHANGELOG.md (superseded by docs/CHANGELOG.md)

[1.0.0.0] - 2025-12-15

Initial release of the Bestway CSM API Toolkit.

Added

  • Service Orders API (Page 56101) — read-only API exposing service order headers with computed csmQualitySent flag from posted invoice history
  • Service Order Lines API (Page 56102) — read-only API exposing service order lines with resolved Service Item, Fault Area, Symptom Code, and Fault Code descriptions
  • Service Order Attachments API (Page 56103) — read-only API exposing document attachments with base64-encoded file content
  • CSM API Helper (Codeunit 56104) — extracted computed field logic for testability
  • OData subpage expansion — lines and attachments linked as subpages on the service order entity, supporting $expand
  • Postman collection (BestwayCSM.postman_collection.json) with OAuth2 authentication