Hi Creatio Community,
We're encountering a puzzling issue on a Freedom UI List Page (specifically, our Invoices_ListPage
) when trying to run a business process (IWVoid_API_POST
) using a custom JavaScript handler. The goal is to test the business process by explicitly passing a hardcoded InvoiceId
, as requested for a specific testing scenario where the button is not on the individual record's form page.
Our Setup:
-
The Button (Menu Item on List Page's ActionButton):
We've added a crt.MenuItem to the ActionButton on our Invoices_ListPage. This menu item is intended for testing and is configured to trigger a custom handler:
JSON
// In viewConfigDiff of Invoices_ListPage.js
{
"operation": "insert",
"name": "TargetVoidButton", //
"values": {
"type": "crt.MenuItem",
"caption": "Test Void BP (Hardcoded ID)",
"icon": "debug-icon",
"visible": true,
"clicked": {
"request": "crt.HandleButtonClickRequest",
"params": {
"buttonName": "RunTargetVoidProcessHandler"
}
}
},
"parentName": "ActionButton",
"propertyName": "menuItems",
"index": 3
}
-
The Handler (in handlers array of Invoices_ListPage.js):
This handler is designed to run the IWVoid_API_POST process with a specific, hardcoded InvoiceId.
JavaScript
// In handlers array of Invoices_ListPage.js
{
request: "crt.HandleButtonClickRequest",
handler: async (request, next) => {
if (request.buttonName === "RunTargetVoidProcessHandler") {
console.log("RunTargetVoidProcessHandler triggered.");
Terrasoft.showInformation("Test: Running process with hardcoded ID. Check console.");
const processName = "IWVoid_API_POST";
const hardcodedInvoiceIdForTest = "3c2b6d9f-4c1e-4364-99f2-53956562b606";
const parameterNameInProcess = "InvoiceId";
console.log(`Test: Attempting to run BP '<span class="math-inline">\{processName\}' with EXPLICIT HARDCODED ID '</span>{hardcodedInvoiceIdForTest}' for parameter '${parameterNameInProcess}'.`);
try {
const response = await request.$context.executeRequest({
type: "crt.RunBusinessProcessRequest",
params: {
processName: processName,
processParameters: {
[parameterNameInProcess]: hardcodedInvoiceIdForTest
},
saveAtProcessStart: false,
showNotification: true
}
});
console.log("Test: BP execution request completed. Response:", response);
if (response && response.success === true && response.processId && response.processId !== '00000000-0000-0000-0000-000000000000') {
const successMsg = `Test: BP '${processName}' (ID: ${response.processId}) initiated. Check Process Log.`;
console.log(successMsg);
request.$context.showInformationDialog?.(successMsg);
} else {
let errorMsg = `Test: Failed to start BP '${processName}'.`;
let serverDetails = (response && response.errorInfo && response.errorInfo.message) ? response.errorInfo.message : "Details unavailable or process not found (zero ID / success:false).";
errorMsg += ` ${serverDetails}`;
console.error(errorMsg, "Full response:", response);
request.$context.showErrorDialog?.(errorMsg);
}
} catch (error) {
console.error(`Test: Exception for BP '${processName}':`, error);
let exceptionMsg = (error instanceof Error && error.message) ? error.message : "Client-side exception.";
if (error.errorInfo && error.errorInfo.message) {
exceptionMsg = error.errorInfo.message;
}
request.$context.showErrorDialog?.(`Test: Error triggering BP: ${exceptionMsg}`);
}
return;
}
return next?.handle(request);
}
}
The Problem:
When we click the "Test Void BP (Hardcoded ID)" menu item, the handler triggers, and the client-side logs show the crt.RunBusinessProcessRequest is being prepared correctly with processName: "IWVoid_API_POST" and the hardcoded InvoiceId.
However, the server responds with:
{
processId: '00000000-0000-0000-0000-000000000000',
processStatus: 0,
resultParameterValues: null,
executionData: null,
success: false,
errorInfo: {
errorCode: "ItemNotFoundException",
message: "Item process schema \"\" not found.", // Note the empty quotes for schema name
stackTrace: null
}
}
The key error is <strong>Item process schema "" not found.</strong>
What We've Tried:
- Confirmed the schematic name (Code) of our business process is indeed
IWVoid_API_POST
.
- Confirmed the input parameter in the BP designed to take the ID is named
InvoiceId
.
- Repeatedly saved, compiled, and published the
IWVoid_API_POST
business process and ensured it's marked as "Active."
- Checked the package containing the process for any errors and recompiled the package.
- Performed thorough browser cache clearing and hard refreshes (Ctrl+F5).
- We also have another menu item on the same list page ("VoidInvoice") that uses a declarative
crt.RunBusinessProcessRequest
with processRunType: "ForTheSelectedRecords"
and parameterMappings: { "InvoiceId": "Id" }
. When a record is selected and this menu item is clicked, it successfully starts the <strong>IWVoid_API_POST</strong>
process (verified in Creatio Process Log with a non-zero instance ID). This makes the current error even more puzzling.
Our Questions for the Community:
- Why would the
ProcessEngineService
report Item process schema "" not found
(with empty quotes for the schema name) when the processName: "IWVoid_API_POST"
is explicitly and correctly provided in the params
of crt.RunBusinessProcessRequest
from our custom handler?
- Is there any known difference in how process names are resolved or how schemas are looked up by the server when
crt.RunBusinessProcessRequest
is invoked programmatically from a handler with processParameters
explicitly set (using a hardcoded ID), versus when it's invoked declaratively with processRunType: "ForTheSelectedRecords"
or processRunType: "ForTheSelectedPage"
?
- Are there any deeper caching mechanisms (server-side, metadata) or specific registration steps for business process schemas that we might be missing, which could lead to this behavior only for the explicit parameter call?
- Has anyone encountered a similar situation where a process is findable/runnable via one SDK invocation method (declarative, context-based) but not another (programmatic handler, explicit parameters) from the same Freedom UI page type?
We are unable to access detailed server-side application logs for this specific environment at the moment, which is hampering deeper diagnosis from our end.
Any insights, suggestions, or similar experiences would be greatly appreciated!
Thank you!