Skip to main content
July 23, 2026
Question

Unable to save fv!processInfo.pv.[process variable] back into interface using a!startProcess v25.4

  • July 23, 2026
  • 3 replies
  • 5 views

Hi everyone,

I encountered an issue regarding saving process variable using a!startProcess -> onSuccess on version 25.4, the fv!processInfo.pv.subCategory was not saved back into local variable ri!checkStatusofChangingCategory. Here is the code:

a!startProcess(
processModel: cons!NFL_CONS_PROCESS_CHANGE_CASE_TYPE_CATEGORY,
processParameters: {
subCategory: ri!subCategory,
newCategoryId: local!selectedNewCategory
},
onSuccess: {
ri!saveInto,
a!save(
ri!checkStatusofChangingCategory,
append(
ri!checkStatusofChangingCategory,
fv!processInfo.pv.subCategory
)
),
a!save(
local!currentCategory,
local!selectedNewCategory
),
a!save(ri!subCategory, null),
a!save(local!selectedNewCategory, null),

}
)

The initial value of ri!checkStatusofChangingCategory was null after onSucess, it became [null].
This code worked with version a!startProcess_24r3 ( it successfully saved pv.subCategory into ri!checkStatusofChangingCategory), i want to know the reason why, what am i missing? I'm looking for an explanation for this issue as i already known a workaround.
What i have tried: 
  • Activity channing
  • using isSynchronous combine with onIncomplete
  • saving another variable

3 replies

harshas2775
July 23, 2026

The major difference between a!startProcess_24r3 and latest a!a!startProcess is about auto scaled and asynchronous process handling. Depending on the state of process the properties returned can vary. For example, as per the ProcessInfo properties, onInComplete for a synchronous process returns empty pv list. Using just isSynchronous as true would return pv value for a Synchronous process.

So Can you try once just with the isSynchronous flag and without onInComplete attribute and see if it works.

stefanhelzle0001
July 23, 2026

I cover these changes in my blog post: https://appian.rocks/2024/12/09/appian-244-insights/

mikes0011
Brainy
July 23, 2026

Despite Appian's claims otherwise, they really kind of broke a!startProcess with this "upgrade".  They did provide more granular functionality, like what I would normally want when a component gets upgraded, but they offered no path to make use a very commonly used feature of the old one, which was that it acted synchronous along activity chaining and then returned any concurrent process variable values when chaining broke. 

There is no way to accomplish this in the newer version for an existing process (as-is) when it doesn't end quickly, as the "synchronous" onComplete save only executes upon actual completion of the process.  Their "official" guidance is to break up single processes into layered synchronous/asynchronous levels where the top layer can complete (thus returning synchronous data to your interface) and any subsequent functionality is launched in an async subprocess/startprocess, though this adds undue cumbersomeness IMHO.

To slightly more directly answer your question: your code would need to include "isSynchronous" set to TRUE, because if it's not, it won't return process data at all (annoyingly, since some things, like process ID, could / should be available regardless of synchronicity), and the called process needs to complete.  Technically if it doesn't complete, you could capture any current data using the "onIncomplete" save, but this only executes after 30 seconds, regardless of chaining (annoyingly).  This is where they should have added some functionality in parity with the old version that could check for data to return upon broken chaining (or perhaps a third synchronicity mode). 

But for now we're stuck either compromising, or using the deprecated version (which will work for at least the next 10 years, going by the continued working state of older deprecated components that still stick around).