Troubleshoot Rendered Sequences
Workflow Error on Rendered Forms
When a server-side error occurs during the processing of a rendered sequence that cannot be corrected via form resubmission, an error message is displayed. The default message text is "Unable to process form. Please contact your administrator for assistance."
You can edit the message text on the Settings tile in Form Designer and save your custom message. You can use HTML markup to encode a URL or email address if desired.
By design, the error details will only be captured in the log files. You need to check the log files to troubleshoot the error. For more information, see Log Files. |
Server Error - Workflow Aborted
If a user encounters the following error when clicking Next in a rendered sequence, the most likely cause is that the SQL server connection is slow or down. Hence the instance could not be persisted in the DurableInstance Store at that point. The user should refresh the sequence in the browser and retry.
When this error occurs, you will probably also see some exceptions in the Renderer log such as:
2017-12-12 18:40:00.1218 2941 Error Cmc.Nexus.FormsBuilder.Renderer.Web.Services.FormInstanceService Aborted: System.Runtime.DurableInstancing.InstanceOwnerException: The execution of an InstancePersistenceCommand was interrupted because the instance owner registration for owner ID 'dd96f9bb-4995-4480-b80d-9e0d99ea703b' has become invalid. This error indicates that the in-memory copy of all instances locked by this owner have become stale and should be discarded, along with the InstanceHandles. Typically, this error is best handled by restarting the host.
Remedy:
Execute an IISreset on the server.
Forms are Skipped
If a rendered sequence does not display all forms in the sequence, check for missing WaitForFormBookmark activities in the transitions before and after the skipped forms.
E-Sign Document is Blank
If an e-sign document is blank, check the URL in the PrintUrlToPdf activity. If one URL character is wrong or spaces are not substituted with “+”, the target PDF will be empty. To verify you have the proper URL, check it with ViewCreator just after you have entered data on the form to be converted. Open a separate tab and ensure your form is displayed at the following URL:
http://<server><domain>:<port>/#/viewCreator/WorkflowDefinitionId/forms=FormName
On a slow server the time before the converter starts may not be sufficient. In the Renderer web.config the default setting for ViewCreatorDefaultStartConversionTimerInMilliseconds is 500. Try increasing it to 1000.
Note: Ensure that e-sign components and the Form Section they are contained in DO NOT have Visible set to false (as that will also hide from the e-sign partner). Use the build-in style hideDocuSignWhiteSpaceInFormSection in the Class property of the Form Section instead.
Disappearing Grid Rows on Edit
Solution: The Mapped Id used for the grid must be unique per row.
- For most Anthology Student entities, the Id field can be used.
- For CampusNexus CRM entities, the KeyId field can be used.
If using a SerializableDynamicObject not bound to a defined entity, the grid will automatically assign a unique Id to be used.
Slow Loading of Authenticated Sequences
If the first form in an Anthology Student sequence is slow every now and then, but subsequent loads are okay, this could mean that the Anthology Student application, whose services are most likely invoked with a Get or Create activity on the first form’s entry, may be taking some time to start up.
The default value of Idle Time-out setting for the Application Pool used by the Web Client for Anthology Student is 20 minutes. If you don’t have much traffic or intermittent traffic, consider increasing this value to 12 (720 minutes) or 24 hours (1440 minutes).
-
In Internet Information Service (IIS) Manager, expand the server node, and click Application Pools.
-
Select the CampusNexusStudentAppPool and click Advanced Settings.
-
In the Process Model section, increase the Idle Time-out (minutes) value to 720 or 1440.
Visually Examine Data in Renderer
Note: The following JSON display has been replaced by a setting in Forms Builder 3.4 which allows you to turn it on for the entire site (normally only done in a development environment). However, the following technique may still be useful to embed this code in a single form temporarily on a production site to display data for a data-dependent situation.
You can add a visual display of the current data in a form by exposing the JSON model. There are two ways to look at the data:
-
You can look at the JSON on a global basis for every sequence and every form with the following option in the Settings workspace of Form Designer:
-
You can use the JSON Debug Info component to help debug forms in production mode where the JSON information is needed for a single form and not the entire site (see JSON Debug Info).
Debug - Show Generated JSON Model
When the "Debug - Show Generated JSON Model" option is enabled in the Forms Builder Settings workspace, additional data that shows the values for objects on the form will be shown at the bottom of each rendered form. This data can be helpful for troubleshooting, especially for complex components on a page where knowing the data that is available to a workflow during a transition will aid in debugging a workflow.
On form load, the Generated Model for Debugging section shows the Renderer Media Variables. As the form fields are populated with values, the debugging section displays the values associated with each object on the form, i.e., all model entity data on the page and new values entered are displayed in real time.
Notes:
-
On form transition, the entity data is serialized, and the debugging section will present all fields (not just the fields completed for the entity in the form).
-
A createEntity or getEntity activity in the workflow will also cause all data fields of an entity to be included in the debugging section.
DbUpdateConcurrency Exception
A DbUpdateConcurrency error occurs when an attempt is made to update an instance of an entity via a Save activity, but that instance has been modified by another user in the time from when the instance was initially retrieved in the workflow to the point in time when the Save activity executes.
The best practice to avoid this error is to add a TransactionScope activity to the workflow. Use the defaults of IsolationLevel = Serializable, and a timeout of 1 minute.
Within that TransactionScope, add a GetEntity activity to retrieve the instance of the entity prior to the execution of the SaveEntity activity. Any property values that need to be updated prior to saving can be done so via Assign statements right after the Get activity and right before the Save activity.
A transaction locks the database to give the workflow a chance to read and update with no other process simultaneously doing the same. Read about the other less aggressive isolation levels as they may be adequate for the purpose based on the type of updates being done and produce less overhead. Google “TransactionScope IsolationLevel Activities”. A “RepeatableRead” may be sufficient.
This pattern will eliminate any chance that another user will update this record in between the execution of the Get and Save activities within the workflow.
Access Denied Error
If the API keys are not set up correctly, an "Access denied" error will be seen in the Renderer log, for example, when a Forms Builder workflow calls an Anthology Student activity.
Solution: Ensure that the API keys across all products match. For more information, see API Keys.