Support Article
System is showing error message after Signature capture
SA-50167
Summary
User has a screen where user can provide the signature. This is done by using Out-of-the-box (OOTB) Capture Signature control.
The issue is when user enters his/her signature and clicks on Accept link available there and then submits the screen, system showing the error.
On tracing it is found that pyStaleTransaction activity is executing in this scenario.
Error Messages
This action is not allowed as it is outside the current transaction.
Steps to Reproduce
1. Create a work object.
2. Navigate to the screen where Signature Capture control is present.
3. Input signature and click on Accept.
4. Click Continue button to go to next screen.
Root Cause
A defect in Pegasystems’ code or rules.
PRPC creates frames in the UI based on the application design.
Every operation / event that user performs it creates a request and passes to server.
Every request carries transaction id. If the request has db commits, then the transaction id of that request carried will be verified before doing commit into DB. If it mismatches then the transaction id mismatch error will be thrown. The mismatch generally happens in the following scenarios. Let’s assume R1 and R2, two requests are created simultaneously:
By the time R2 is created, R1 reaches the server.
R1 Statistics:
------------------
Server received at time: 05:05:05.234
Server sends response at time: 05:05:05.934
Assume that R2 reached server at time: 05:05:05.526
In the above scenario, R1 and R2 carry the same transaction id. However, R1 db commit is done and the db will be updated with new transaction id. R2 carries the old id, PRPC engine throws transaction id error.
Resolution
Perform the following local-change:
Create a non-auto generated section and paste the following code and embed the section at the end of a section containing the Siganture control:
<script>
var newurl = SafeURL_createFromURL(pega.u.d.url);
newurl.put('pzFromFrame','');
pega.u.d.url = newurl.toURL();
var url = document.forms[0].action;
var formURL = SafeURL_createFromURL(url);
formURL.put('pzFromFrame','');
document.forms[0].action= formURL.toURL();
</script>
Published January 31, 2018 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.