What is the best practice for configuring process instance archival ?

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:

    1. User-Centric Processes - These are processes with user input tasks or more complex activities. Processes with user activity often have more of a need for reviewing the process in monitor mode (e.g. users may make mistakes or encounter errors). I usually use the system default archive policy for these at 7 days.
    2. Automated Processes - These are processes with little or no user input. Often they involve integrations, document generation, etc. I usually use a shorter archive time of around ~3 days because it is less likely that I would need to review this process daata
    3. Utility Processes - These are processes that are really basic (think a process that runs on a timer every morning and then kicks off another process. Honestly for these kinds of processes, I tend to just delete the data or have a very short archvial policy like 1 day

    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.

  • 0
    Certified Lead Developer

    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 I try to classify the process models in order to make defining such a Policy as simple and easy to understand as possible:

    • Utility Process Models - e.g. write data to a database - if that's all the process does, it either works or it doesn't. If it does then you can see in the database what the result was.I tend to have these set to 'Delete' immediately (i.e. 0 days)
    • Automated Process Models - it depends!
    • User-Centric Process Models - it depends!

    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.