Vulnerability in EPiServer.Forms

Try our conversational search powered by Generative AI!

Quan Mai
Feb 27, 2019
(6 votes)

New feature in Commerce 13: Extendable OrderStatus and OrderShipmentStatus

We have been asked for quite something on how to extend OrderStatus and OrderShipmentStatus. The problem is, we can't, because they are two enums, and C#/.NET does not allow you to extend enums in any way.

However, that is going to change in Commerce 13. OrderStatus and OrderShipmentStatus are now classes, and you add new instances to the system. For example, if you want to add a new status of "InDispute", you can do like this in one of your initialization modules:

            OrderStatus.RegisterStatus(new OrderStatus(128, "InDispute"));

It's important to have this code in both your CMS and Commerce Manager sites.

New statuses will be available for filter and search in Commerce Manager (of course, you can now set an order status to that new value)

You might notice that the new status is not "localized". If you want it to display nicer, just add a new translation to App_GlobalResources\SharedStrings.resx

  <data name="OrderStatus_InDispute" xml:space="preserve">
    <value>In Dispute</value>

Note that, this is a breaking change. As OrderStatus and OrderShipmentStatus are no longer enums, they can no longer be used in bitwise operations. If you were using some bitwise operations for comparison, for example 

status & OrderStatus.InProgress == status 

You would have to change it to 

status == OrderStatus.InProgress

Commerce 13 is a few weeks away.

Feb 27, 2019


Vincent Feb 27, 2019 09:29 PM

Very helpful feature. I always “complain” c# enum design when I moved from java to .net. :p

Menno Zeilstra
Menno Zeilstra Mar 10, 2022 04:32 PM

I added a Queued Status, and added the Localization to the sharedstrings, somehow the Status remains blank when opening the details  (clicking in the Id Column)

Please login to comment.
Latest blogs
Stop Managing Humans in Your CMS

Too many times, a content management system becomes a people management system. Meaning, an organization uses the CMS to manage all the information...

Deane Barker | Nov 30, 2023

A day in the life of an Optimizely Developer - Optimizely CMS 12: The advantages and considerations when exploring an upgrade

GRAHAM CARR - LEAD .NET DEVELOPER, 28 Nov 2023 In 2022, Optimizely released CMS 12 as part of its ongoing evolution of the platform to help provide...

Graham Carr | Nov 28, 2023

A day in the life of an Optimizely Developer - OptiUKNorth Meetup January 2024

It's time for another UK North Optimizely meet up! After the success of the last one, Ibrar Hussain (26) and Paul Gruffydd (Kin + Carta) will be...

Graham Carr | Nov 28, 2023

Publish content to Optimizely CMS using a custom GPT from OpenAI 🤖

Do you find the traditional editor interface complicated and cluttered? Would you like an editorial AI assistant you can chat with? You can!

Tomas Hensrud Gulla | Nov 28, 2023 | Syndicated blog

Optimizely Graph and Next.js: Building Scalable Headless Solutions

Optimizely Graph harnesses the capabilities of GraphQL, an intuitive and efficient query language to, transform content within an Optimizely CMS in...

Szymon Uryga | Nov 27, 2023

Getting Started with Optimizely SaaS Core and Next.js Integration: Testing Content Updates

The blog post discusses the challenges of content updates on a website using Optimizely CMS, Next.js, and the Apollo Client due to Apollo's local...

Francisco Quintanilla | Nov 27, 2023 | Syndicated blog