Skip to content
Last updated

Product upgrade - changed behaviour of Storm API upgrade to Norce Commerce Services

Last changed: 2025-08-20

A list of behaviour discrepances between old service and new

Background

To make use of moder infrastructure in our cloud native environment our services needs to get an upgrade if its technology stack. This has a a consequence that some error messages and other outlying behaviour is different. We foresee no major problem for our clients by this, but we note all our findings here for your convienience.

Changes

FilterItems

The filter item (product filters) has a built-in field "type", that the jsonserializer handles differently in the new .net service.

The old one has it named "__type" with a longer name and the new calls it "$type" with a short name. The field is created by the serializer and cannot be easily changed, but we expect it pose not big problem for the clients.

Example 1.1 - Old service

{
        "__type": "FilterItem:Enferno.Services.Contracts.Expose.Products",
        "Id": "11",
        "Name": "Chain saws",
        "Value": "11",
        "Type": null,
        "Uom": null,
        "Count": 1,
        "Description": null,
        "Code": null,
        "SortOrder": null
}

Example 1.2 - New service

{
        "$type": "FilterItem",
        "Id": "11",
        "Name": "Chain saws",
        "Value": "11",
        "Type": null,
        "Uom": null,
        "Count": 1,
        "Description": null,
        "Code": null,
        "SortOrder": null
}

API Calls

  • ListProductFilters
  • ListProductFiltersByIds
  • ListProductFiltersByCustomer
  • ListProductFiltersByPriceList

Wrong Status Code

New service returns 204 No content instead of 200 OK, when there is no result on a search or listing call and no data in body.

API Calls

  • Search and listings
  • Get (when no item exists)

AsVariants (on filters)

AsVariants is not used by filter methods and is removed from new service.

API Calls

  • ListProductFilters
  • ListProductFiltersByIds
  • ListProductFiltersByCustomer
  • ListProductFiltersByPriceList

Row notations

The new service uses linux components and will return result based on unix line breaks standards where applicable. This means that the old service returns \r\n but the new will return \n.

Occurence

  • HTML-formated texts
  • HTML-formated text parametrics
  • Description fields, like payment method description on checkout objects.
  • Similar description fields

Error Code result messages

Some of the results returned by web host are different, for example 401 Unauthorized. The .net 9 version gives out more information about the error, while the old version just returns a generic html formatted response from the web server.

Example 2.1 - Old service

Request Error

Example 2.2 - New service

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.2",
  "title": "Unauthorized",
  "status": 401,
  "traceId": "00-9842cf3cf079f14972ee3fb677eea195-990d598e9a426d98-01"
}

Example 3.1 - Old service

Request Error

Example 3.2 - New service

{
  "title": "Invalid header",
  "status": 401,
  "detail": "Header ApplicationId is missing."
}

Invalid format

According to all our logs, no-one uses xml anymore, so we have removed the format parameter and JSON is always returned.

Return empty value

Empty result is returned differently. Old service returns empty object {}, but new service will return null.

This is because the serializer works differently.

Occurence

Get methods, list and search methods

  • GetCompanyByOrgNo
  • SearchOrder
  • among others