Forum Discussion

Dave_Lee's avatar
Dave_Lee
Icon for Advisor rankAdvisor
2 months ago
Solved

BMC Remedy Integration

Hi all

I'm looking to do an ITSM integration with BMC Helix/Remedy, which isn't natively supported.

It looks as though we can create a new incident by making a POST request to their API.  But, if we want to do an update, it seems their API requires that you first query the API for an internal ID for the Incident, then make a second call with the update referring to that internal ID.

Apparently this behaviour in the API cannot be altered.  I don't see any way to achieve this in LogicMonitor.  Has anyone successfully integrated LM and BMC Helix/Remedy?  I think we will likely need to build something to sit between and receive the updates from LM and then call the Helix API.

Interested in hearing what others may have done to achieve this.

Dave

  • For anyone that might stumble on this in future...

    I ended up building something outside of LogicMonitor to do this.  It's an Azure Function (similar to an AWS Lambda function for those on the dark side) that accepts an HTTP payload from LogicMonitor and then makes the necessary API calls to the BMC API.

    There were a couple of issues I was having that required something outside of LM:

    • Authentication on the API our customer was using required us to make a call to get a JWT token and then include that in a custom header on subsequent calls.
    • Although BMC Helix has Incident Numbers, which is what you typically use to refer to a ticket  (and what we pull back into LM) any updates to tickets must include the RequestID of the object, which is different.  So before you do an update you have to make a GET request to find the RequestID which you pass in the update.
    • Changing a Priority of an Incident and adding a Work Note has to be done in separate API calls, so a single webhook call from LM on an Update doesn't work.
    • An Incident cannot be set to Resolved unless it is assigned to an individual.  In the case where an alert opens in LM and then clears before anyone has picked up the Incident in BMC Helix, Resolving the Incident fails.  So we have to make a call to check for an Assignee, set one if there isn't one, then POST a Work Note with the info about what we're changing and why, then close the ticket.  So 4 different API calls, which obviously can't be done in LM natively.

    Dave

4 Replies

  • For anyone that might stumble on this in future...

    I ended up building something outside of LogicMonitor to do this.  It's an Azure Function (similar to an AWS Lambda function for those on the dark side) that accepts an HTTP payload from LogicMonitor and then makes the necessary API calls to the BMC API.

    There were a couple of issues I was having that required something outside of LM:

    • Authentication on the API our customer was using required us to make a call to get a JWT token and then include that in a custom header on subsequent calls.
    • Although BMC Helix has Incident Numbers, which is what you typically use to refer to a ticket  (and what we pull back into LM) any updates to tickets must include the RequestID of the object, which is different.  So before you do an update you have to make a GET request to find the RequestID which you pass in the update.
    • Changing a Priority of an Incident and adding a Work Note has to be done in separate API calls, so a single webhook call from LM on an Update doesn't work.
    • An Incident cannot be set to Resolved unless it is assigned to an individual.  In the case where an alert opens in LM and then clears before anyone has picked up the Incident in BMC Helix, Resolving the Incident fails.  So we have to make a call to check for an Assignee, set one if there isn't one, then POST a Work Note with the info about what we're changing and why, then close the ticket.  So 4 different API calls, which obviously can't be done in LM natively.

    Dave

  • For the initial POST to their API to create the incident, does it return the Internal identifier for what was created?

    LogicMonitor has utilized the ##EXTERNALTICKETID## field in other ITSM integrations (like their ServiceNow module).  You could store the internal id in that field and reference it on subsequent events related to that alert in LM.  That way you don't have to make that extra fetch-call to get translation from ##ALERTID## to whatever Remedy stored.


    • jhupka's avatar
      jhupka
      Icon for Neophyte rankNeophyte


      When setting up a custom HTTP integration, you can control fetching this from the response in this area of configuration:

      • Dave_Lee's avatar
        Dave_Lee
        Icon for Advisor rankAdvisor

        It does return a value, but apparently not the one you need if you want to subsequently pass an update.