Hi All,
I would like to know what is the best practice for configuring process instance archival recommended by Appian .
Since the default archival setting is 7 days which can be changed by the system administrator, is it solely dependent on the requirements that whether we can keep the process instance for 3 to 7 days or there is a specific best practice of archiving with X days that can be followed during development.
Thanks in Advance!
Akhila
Discussion posts and replies are publicly visible
I typically think of process archiving policy in three categories based on the type of process model:
I'd also base your archival policy on the data used. The main goal of archiving is to free up process memory. If you have a process that you know contains a large amount of data, you can tend to archive a bit sooner to free up that memory sooner. If there isn't much data used, archiving sooner will have a smaller impact.
The default is to Archive after 7 days. In most instances, this will be perfectly fine. For many projects I don't think the settings would ever have to be touched once unless there was a problem.
If you are noticing your RAM steadily increasing, one of the things that can quickly alleviate the problem is to Archive or Delete sooner. You can look at Health Check results which will tell you which processes are taking up the most RAM. You can try optimizing the worst offenders of process instance size to be much smaller, but if they're already quite small and there's just a huge number of them, you can try archiving them sooner. The cost for archiving sooner is your O&M team's ability to triage incidents. The benefit is more RAM. For things you really don't need and won't ever look at, you can set them to archive or delete after 0 days. They will go away in seconds.
If you create process backed records or reports, those are only going to report on processes that have not archived. If you are using this to do something like last month's sales, you'd need to keep sales processes generating that report from archiving for 30 days. That's about the only reasonable use case I can think of for setting the archival time for greater than 7 days.
Archived processes take up HD storage on your server. If you really don't need it, you can Delete it instead. However, HD is very cheap and you never know when you'll need an archived process for auditing and incident resolution. I would avoid Deletion if at all possible. Even the most seemingly innocuous things could come up in an audit or an investigation. And it could take years to fill up your HD, so not a huge problem, but a potentially huge cost to solve it.
The approach I take is to work with the business to define a 'Process Archiving/Deletion Policy'. There is going to naturally be a tension between the technical need to get completed process instances out of memory as soon as possible, with any true business need to retain them for a specific purpose. Like Peter Lewis I try to classify the process models in order to make defining such a Policy as simple and easy to understand as possible:
There needs to be a clear rationale for retaining or archiving completed instances that is linked directly to a business need. If the requirement is, say, auditing, you might implement an audit in a database and say the requirement is fulfilled there.
I definitely do NOT let any developer leave the Archiving to the default value as this indicates to me they have not thought about or applied the agreed Policy. If the value happens to be the same as the default I STILL make them configure it explicitly as it tells me they have considered and implemented the Policy.