Best practices for handling errors in Appian integrations

Hello,

I’m working on a bidirectional integration between Appian and an external system via a middleware gateway.

In this setup, we often encounter two categories of errors:

  • Technical issues

  • Data issues

  • Errors series (500 and 400)

QuestionMy question:
What are the best practices for functionally handling these types of errors on the Appian side?

Specifically:

  • Should we simply display messages to end users via pop-ups or alert banners?

  • Are there recommended design patterns or built-in Appian features we should consider (such as retry logic, logging strategies, fallback mechanisms, or dynamic UI error messages)?

  • Any advice for differentiating user-facing errors from those logged for admin troubleshooting?

Thanks in advance for your insights!

  Discussion posts and replies are publicly visible

  • +1
    Certified Lead Developer

    If you are calling the integration live from an interface, you could possibly display some kind of error to the user.

    If you are calling the integration in a process model, you can put some retry logic in your process model if the error is intermittent in nature and addressable via a retry. Otherwise you can either just have the process model error out so you can investigate.

    In addition, you can also choose to log the requests in order to be able to do some reporting on the occurence of certain errors.

  • +1
    Certified Lead Developer

    You can make exception swim lanes/interface rule - depending on where you are invoking the integration from - so that if integration fails (reponse has error codes instead of success code) , users are informed with a message on the interface/email about failure along with  corrective measure details like system will retry for 3-4 times and will notify user after successful re-attempts as they occur or they can retry the action again in some time.

    Along with user's Admin's should be notified as well with error codes/failure reason from the integration call. So you can use 'Send email' node to notify application administrators of the error. 

  • +1
    Certified Lead Developer
    in reply to Harsha Sharma

    From my point of view, the correct approach is the one suggested by  because you will have information about techinical and functional errors.

  • Best Practices for Handling Integration Errors in Appian:

    1. UI Errors: Show user-friendly banners/pop-ups for 4xx errors when integrations are called from interfaces.

    2. Retry Logic: Use exception flows and timers in process models to retry on 5xx errors.

    3. Logging: Log requests/responses for monitoring and admin troubleshooting.

    4. Error Differentiation: Handle 4xx as data issues for users; treat 5xx as technical issues for admins.

  • for example how we can handle with simple methode this in appian this error comming from another system : 
    Connection Issue: 
    If there is any connection issue between the system in the response message we will send the message "Unable to connect to the remote server" (connection not established and there is no chance of executing API logic so we can not send any error status codes).

     Request Timeout: The Status code 408 will be sent in the response message of the request indicating the Request time out.
    In both scenarios proper error message will be sent , you can rely on error messages instead of status code values.


  • for example how we can handle with simple methode this in appian this error comming from another system : 
    Connection Issue: 
    If there is any connection issue between the system in the response message we will send the message "Unable to connect to the remote server" (connection not established and there is no chance of executing API logic so we can not send any error status codes).

     Request Timeout: The Status code 408 will be sent in the response message of the request indicating the Request time out.
    In both scenarios proper error message will be sent , you can rely on error messages instead of status code values.