This answer is very much dependent on the nature of the error at hand. This article will seek to explore some of the reasons that a transaction may fail and the general approach to investigating them.
The first element explore is whether the issue is related to the inbound request, the adapter itself, or the outbound system. Some questions to consider include:
- Does the error occur when visiting the adapter URL directly?
- Is it the same failure every time?
- What happens when you provide inbound requests manually?
- Does the transaction complete but the outbound system indicate its own error?
To narrow down causes, one should first take a look at the transaction log (make sure Transaction Logging is enabled). It may also be advantageous to turn on Debug Mode to prevent the outbound system from receiving a response while investigating.
At this point you will want to try and reproduce the issue to isolate the same failure in a repeatable way. Here are some common errors you might run in to:
- Required parameter missing: The adapter either includes a Require component or the selected protocol(s) mandate a parameter that was not found in the request or response.
- Signature invalid: For LTI 1.1 and other protocols that utilize a signed or hashed security check, the construction of said digest based on the inputs does not match.
- Timestamp stale: For LTI 1.1 and other protocols that utilize a signed or hashed security check, the request was not created within a few minute window.