Nav

BMC Remedy Connector

Demos and Technical ReferenceAnypoint Exchange

The Anypoint BMC Remedy AR System Connector is built with the BMC Remedy AR System Java API v8.1 and is compatible with BMC Remedy AR System 7.x and later. The connector exposes methods for performing CRUD operations on BMC Remedy AR System.

Read through this User Guide to understand how to set up and configure a basic flow using the connector. Read through the Technical Reference to understand how the connector operations interact with BMC Remedy AR System. You will also find demo applications here that illustrate how to use the connector operations. Release Notes are a good way to track feature additions, compatibility limitations and API version updates with each release of the connector version.

MuleSoft maintains this connector under the Select support policy.

Prerequisites

This document assumes that you are familiar with Mule, the Anypoint Studio interfaceGlobal Elements, DataSense, and batch processing in Mule. Further, it assumes you are familiar with BMC Remedy AR System.

Requirements

To use the BMC Remedy connector, you need:

  • BMC Remedy AR System - A BMC Remedy AR server instance v7.x or later. The connector has been tested against a BMC Remedy AR server v9.1 instance. See the Installation instructions.

  • BMC Remedy AR System Java API v8.1 - You can download it from here: Download.

Compatibility

Application/Service Version

Mule Runtime

3.5.2 and higher

BMC Remedy AR API

v8.1

Installing the Connector

You can install a connector in Anypoint Studio using the instructions in Installing a Connector from Anypoint Exchange.

Configuring the BMC Remedy Global Element

To use the BMC Remedy Connector in your Mule application, you must configure a global BMC Remedy Connector element that can be used by all the BMC Remedy connectors in the application (read more about global elements).

Adding the BMC Remedy Connector to a Flow

To use the BMC Remedy connector in a Mule application project:

  1. In Anypoint Studio, click File > New > Mule Project.

    Create new project

  2. Enter a name for your new project and leave the remaining options with their default values.

  3. If you plan to use Git, select Create a .gitignore file for the project with default ignores for Studio Projects, and then click Next.

  4. Click Finish to create the project.

  5. Create a new Mule project in Anypoint Studio.

  6. Drag the BMC Remedy connector onto the canvas, then select it to open the properties editor.

  7. Configure the connector’s parameters:

    BMC Remedy operation config

    Field Description

    Display Name

    Enter a unique label for the connector in your application.

    Connector Configuration

    Select a global BMC Remedy connector element from the drop-down.

    Operation

    Select an operation for the connector to perform.

  8. Save your configurations.

BMC Remedy Connector Authentication

To access the data in a BMC Remedy AR System instance, you have the following possibilities in terms of authentication:

  • Basic authentication

All you need to do in order to use "Basic Authentication" is to provide your credentials in a global configuration, then reference the global configuration in any BMC Remedy Connector in your application. If you notice that you are getting connection timeouts or read timeouts, you can modify the Connection Timeout and Read Timeout from the General Category, to increase those values.

  1. Required parameters for Basic authentication:

    1. Username: Enter the username.

    2. Password:  Enter the password. 

    3. Server: Enter the IP of the AR server responsible for handling login requests

    4. Server Port: Enter the port number on which the AR server is configured to handle the requests

    5. Authentication: Enter the authentication string alias.The Authentication String Alias can be used to identify the correct authentication domain for the user.

    6. Locale: Enter the locale.

To be able to use the BMC Remedy server, you need to specify the path to previously downloaded AR API library:

  • Required dependencies configuration:

    1. Press the Add File button in "Required dependencies" section.

    2. Navigate to the location of the "arapixx_buildxxx.jar" library, select it and click "Open".

    Basic-Authentication

Using the Connector

The BMC Remedy Connector functions within a Mule application as a secure entrance for access and updates to your organization’s information in the BMC Remedy AR System.

Your application can perform several operations that BMC Remedy AR System exposes via RPC. When building an application that connects with BMC Remedy AR System, for example, to create new application Users, you don’t have to go through the effort of custom-coding and securing a connection. Rather, you can just drop a connector into your flow, configure a few connection details, then run the app to begin transferring data. 

Using the Connector in a Mavenized Mule App

After you download and install the connector, use the following steps to make the BMC Remedy connector available to inside a Mule application for use and packaging.

  • Add the repository information to your project’s pom.xml file:

    
                 
              
    1
    2
    3
    4
    5
    6
    7
    
    <repositories>
        <repository>
            <id>mule-ee-releases</id>
            <name>MuleEE Releases Repository</name>
            <url>https://repository-master.mulesoft.org/nexus/content/repositories/releases-ee/</url>
        </repository>
    </repositories>
  • Add the module as a dependency to your project using the release version:

    
                 
              
    1
    2
    3
    4
    5
    
    <dependency>
        <groupId>org.mule.modules</groupId>
            <artifactId>remedy-connector</artifactId>
        <version>RELEASE</version>
    </dependency>

    Inside the <version> tags, put the desired version number, the word RELEASE for the latest release, or SNAPSHOT for the latest available version. The available versions to date are:

    • 1.0.0

Adding Connector to the Packaging Process

That way the final zip file which contains your flows and Java code also contains this module and its dependencies. Add a special inclusion to the configuration of the Mule Maven plugin for this module as follows:


          
       
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<plugin>
    <groupId>org.mule.tools</groupId>
    <artifactId>maven-mule-plugin</artifactId>
    <extensions>true</extensions>
    <configuration>
        <excludeMuleDependencies>false</excludeMuleDependencies>
        <inclusions>
            <inclusion>
                <groupId>org.mule.modules</groupId>
                <artifactId>remedy-connector</artifactId>
            </inclusion>
        </inclusions>
    </configuration>
</plugin>

Common Operations

The following are the common use cases for the BMC Remedy connector:

  1. Create single - Use this operation for creating a single new object on the Remedy AR server.

  2. Create - Use this operation for creating one or more new objects on the Remedy AR server.

  3. Get single - Use this operation for retrieving one existing object on the Remedy AR server by specifying the object’s Id.

  4. Get - Use this operation for retrieving a list of existing objects on the Remedy AR server by providing a list of Ids.

  5. Update single - Use this operation for updating one existing object on the Remedy AR server.

  6. Update - Use this operation for updating multiple existing objects on the Remedy AR server.

  7. Upsert single - Use this operation to create an object if the object does not already exist, or update an existing object on the Remedy AR server.

  8. Upsert - Use this operation to create one or more objects if the objects do not already exist, or update one or more existing objects on the Remedy AR server.

  9. Query - Use this operation for executing queries on the Remedy AR server.

Example Use Case - Creating a User

Usecase flow

Create a new Mule Project by clicking on File > New > Mule Project. In the new project dialog box, the only thing you are required to enter is the name of the project. Click on Finish.

Now let’s create the flow. Navigate through the project’s structure and double-click on src/main/app/project-name.xml and include the elements seen in the above image.

  1. Let’s start configuring each element. Double-click on the HTTP element.

    Http component

  2. Set the Path field to "/createUser".

  3. Double-click on the first Transform Message element.

  4. The data mappings should look like this:

    Transform JSON to User component

    .

  5. Double-click on Remedy connector.

  6. Click on the plus sign next to the Connector Configuration dropdown.

  7. The global element properties pop-up prompts you for information required for basic authentication. For more info see the Installing and Configuring section.

  8. In the Connection section enter the username and password credentials used to access the BMC Remedy AR System instance or reference them using the "placeholders" you may have set in a properties file.

  9. Click OK to return to the Remedy tab.

  10. From the Operation dropdown in the Basic Settings section choose Create.

  11. From the Remedy Form Type dropdown in the General section choose <Object Type to Create>

    1. For this example create an object of type User. Your connector’s configuration should be complete. Remedy connector properties

  12. Double-click on the Logger component.

  13. In the "Message" field enter the text "Entry created:"#[payload].

  14. Double-click on the second Transform Message element.

  15. Inside the Transform Message component, you should see this:

    User to JSON Transformer

  16. Run the application in Anypoint Studio (Right-click on the project name > Run As > Mule Application).

  17. In order to trigger creation of the user, you will need to execute a HTTP POST request having the payload in the following format:

    
                
             
    1
    2
    3
    
    ParameterMap{
      [Username=[<username>]]
    }

    Monitor the Studio console for the "Entry created:" message and ensure the new object was created.

For other entities you can use a similar flow but you have to change the "Remedy Form Type" in the "Remedy" to the name of the form corresponding to the object type you are going to create, and re-map fields on the Transform Message component as needed.

Example Use Case XML - Creating a User


         
      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:remedy="http://www.mulesoft.org/schema/mule/remedy" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
        xmlns:spring="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/remedy http://www.mulesoft.org/schema/mule/remedy/current/mule-remedy.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
    <remedy:config name="Remedy__Configuration" username="${config.username}" password="${config.password}" server="${config.server}" serverPort="${config.serverPort}" doc:name="Remedy: Configuration"/>
    <flow name="crud_app_template">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <parse-template location="form.html" doc:name="Parse Template"/>
        <set-property propertyName="content-type" value="text/html" encoding="US-ASCII" mimeType="text/html" doc:name="Property"/>
    </flow>
    <flow name="create_userFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/createUser" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform JSON to User">
            <dw:input-payload doc:sample="sample_data\json.json"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
[{
        "2": "Submitter1",
        "7": "Current",
        "8": "Short description1",
        "Login Name": payload.Username
}]]]></dw:set-payload>
        </dw:transform-message>
        <remedy:create-single config-ref="Remedy__Configuration" type="User" doc:name="Remedy">

        </remedy:create-single>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Create Result to JSON">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>
    </flow>
    <flow name="get_userFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/getUser" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform JSON to String">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload.entry-id]]></dw:set-payload>
        </dw:transform-message>
        <remedy:get-single config-ref="Remedy__Configuration" type="User" doc:name="Remedy"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Get Result to JSON">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>
    </flow>
    <flow name="update_userFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/updateUser" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform JSON to User">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
        "2": "Submitter1",
        "7": "Current",
        "8": "Short description1",
        "Login Name": payload.Username,
        "Request ID": payload.Id
}]]></dw:set-payload>
        </dw:transform-message>
        <remedy:update-single config-ref="Remedy__Configuration" type="User" doc:name="Remedy"/>
        <dw:transform-message doc:name="Transform Update Result to JSON">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>
    </flow>
    <flow name="upsert_userFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/upsertUser" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform JSON to User">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
        "2": "Submitter1",
        "7": "Current",
        "8": "Short description1",
        "Login Name": payload.Username,
        ("Request ID": payload.Id) when payload.Id != ""
}]]></dw:set-payload>
        </dw:transform-message>
        <remedy:upsert-single config-ref="Remedy__Configuration" type="User" doc:name="Remedy"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </flow>
    <flow name="query_userFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/queryUser" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform JSON to String">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload.Query]]></dw:set-payload>
        </dw:transform-message>
        <remedy:query config-ref="Remedy__Configuration" type="User" doc:name="Remedy"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <dw:transform-message doc:name="Transform Query Result to JSON">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
        </dw:transform-message>
    </flow>
</mule>

See Also