I have a CDT by the name 'Fund' which contains a field 'amount' of type 'Number (Integer)'. Due to business reasons, now I have to change this field's type to 'Number (Decimal)' in this CDT. Which means in the backend, I have to change the datatype for this field from 'int(11)' to 'decimal(19,2)'. When I update the CDT by changing the field's data type, it creates a newer version of it. All the future process instances will reflect the newer version of CDT which is just fine. But in production, I have around 1000 process instances which has a user input task with this CDT as one of the inputs. This means all the live process instances before the deployment will continue to remain on the older version of the CDT which is 'Fund^1'.
What is best / recommended / work around approach to handle the in-flight process instances in this scenario?
Discussion posts and replies are publicly visible
I think the most important best practice is to implement short living processes. My designs restrict the live time of a user input task to around 3 days. After 3 days, it means that the task can not be completed "now" because something is missing. Then the user can create a follow-up which is persisted to DB and restart working on that task a later time.
This results in a way lower number of active processes in general.
In your specific case, I can think of a two-step transition. First, change the type in DB and CDT. Things will still just work. As all old processes are completed, you can update the interface to use a floatingpointField.
Thank you very much for the answer. A follow-up question: Since the in-flight instances still refer to the old version of the CDT, it would not accept any value higher the upper limit of integer i.e., 2147483646
Is there way to circumvent this limitation for in-flight instances?
I do not see a way to do that. If this is a deal-breaker I think there would be a way, but then things become complex. Is a cost/risk/benefit trade-off.
Got it. Right now, I am handling this by manually editing the process instances which have this requirement(number higher than 2147483646). Just wondering is there is any other way. Thank you.
© 2021 Appian. All rights reserved.