A powerful capability of GIS is the ability to integrate your mapping apps with 3rd party business systems and data sources.
Integrating your GIS with your other systems can extend the reach and capabilities of your apps and ensure that you are more efficient and more informed. These types of integrations allow users to more easily complete tasks and work directly between business applications and web GIS applications without needing to jump back and forth between the two systems.
In this Geocortex Tech Tip, we will demonstrate how you can enhance your GIS capabilities by integrating Geocortex Workflow with enterprise asset management system, IBM Maximo.
“Hi everyone, my name is Patrick Fingler and in this Tech Tip video I’m going to be highlighting how you can integrate with Maximo. If you happen to have Maximo and you’re looking for an easier approach to create work orders, assign service requests, or do inspections on your assets and have that tightly integrated with your GIS, then hopefully this Tech Tip video will be interesting and informative! So, without further ado, let’s get started!
In doing so we are going to be using the Maximo Geocortex Workflow activity pack which you can access on GitHub. I will be showing how you can access that and showing some of the activities that are available. So, let’s get started!
Here what I’ve done is just created a simple workflow that first prompts the user to log in. The reason why I have the “Network” tab up here is so that you can see that we are actually using the activities and we are sending web requests to Maximo. We’ve got a development instance of Maximo that we can work with and you can see that we’re sending information to Maximo and retrieving information from Maximo – all while staying within Web AppBuilder in this scenario.
Here you can see we’ve got some work orders, some service requests, and some assets on the map – water lines and so on.
I have been prompted to log in. You may or may not want your end users to be prompted to log in but for demonstration purposes I will log in here. These aren’t the correct credentials so if I log in you can see we’ve got some web requests going to our Maximo environment and it’s telling us that we are unable to log in to Maximo. Let me just enter in the correct credentials. These are demo credentials so I think sometimes we might get a little prompt here saying that our password has been exposed, don’t worry about that.
Now that I’ve logged in, a bunch of other web requests got fired. You can see it’s asking me to create a work order. I can select the location on the map. Maybe you want to investigate this pipe or something like that, or this water line.
Here we’ve got three lists now. The information being pulled and displayed in these lists is dynamically getting populated from Maximo’s rest API. So, this list of classifications is actually coming from Maximo. So, maybe you want to select “Ball Valve”.
Similarly, this list of “Status” is coming from Maximo’s domains. Maybe we’ve got some work assigned to a Ball Valve that’s been waiting to be scheduled. Again, this priority list is coming from Maximo as well. So, let’s say it’s medium priority and we “need to do some maintenance on a Ball Valve”.
Sometimes you would want to tie this to an actual asset. Here I’m just selecting a point on the map. Sometimes you might want to select a feature and then create a work order or service request and associate it with that actual asset. But here we can see we’ve got a Classification, Status, and Priority. These are all being populated from Maximo, and these are the web requests that are getting sent to Maximo to populate this information.
Here we can see we’re going out to Maximo. We’re passing in some kind of a where clause here, defined classifications associated with work orders. If we jump down here, we can see we want to populate all of the domains associated with work orders and the status of work orders. Again, we can see here we’re going out to Maximo and we’re finding all of the different domains associated with ticket priorities.
So, where does all this logic get created using a workflow? I’ll be showing the back end in a moment but let’s first go ahead and click “Create Work Order”. We can see there’s another web request if we scroll up that actually gets sent to Maximo, and here if we scroll down we can select the second one here. If we scroll down, this is all the information that we passed from the form to Maximo. We actually created that work order in the back end so we can see there’s some domains in Maximo, hence why you’re seeing some like the statuses WSCH, which means that it’s been waiting to be scheduled. But all of this information gets passed to Maximo and then a work order from Web AppBuilder gets created at the same time. Here I’ve also added this option so that we’re also creating an ArcGIS feature that includes that information. But really what we’re interested in is this link that takes us to Maximo.
Let’s log in and we can see here I’ve actually created that work order from Web AppBuilder inside of Maximo. Here we’ve got the work order ID, my comments got populated, the site, class, and the status got populated. If we scroll down, we can see the classification that I selected got included and again, just for reference hypothetically, if we scroll down here, we can see the reported by user got included as well. I could make that workflow a lot more complex and we could have some form information where we are also doing scheduling or maybe passing attachments to Maximo, but in this scenario I created a really basic workflow just to show how the rest API calls work.
It’s a pretty neat integration and if you want to jump to the workflow side, we can see inside of Geocortex Workflow we’ve got a variety of different activities available. If I collapse these, a lot of these are the out of the box activities. If we scroll down, you can see there are also other activities. We’ve got one for FME server and here we can see we’ve got a Maximo activity pack. So, what we’ve been doing is we’ve been publishing activity packs for Geocortex Workflow on our GitHub to make it easy for end users to connect to these different enterprise systems.
For Maximo we’ve got a “Create Maximo Service” activity. This is what you will first need to do to actually connect to the rest API. You’ll need to supply a username, a password, or an API key. These shouldn’t be hard coded into your workflows. You should have a way to dynamically generate these and then that will generate a Maximo service which you’ll essentially use in the rest of your activities. Here for example, we can see there’s a “Get Maximo Resource” or “Send Maximo Request”. There’s a number of different activities here. For example, this “Get Maximo Resources” just simply requires that Maximo services input. So, you can connect to that service and it will ask you for the Maximo resource that you want to query. If you’re interested in work orders or something like that, I could type in “MXWO” and then really you just need to enter in a where clause or a select statement and it will find and populate those resources.
Similarly, if you need to create a new Maximo feature, we’ve got an activity for doing that. If you need to create a work order you could do that. Or updating assets, or sending any kind of Maximo web request, we’ve got a lot of activities for implementing this.
If we wanted to specifically see inside of my form, you can see I’ve got these “Classification” and “Status” drop downs. I’ve got a sub workflow that is populating them and inside of this sub workflow I’m using the “Get Maximo Resources” activity. I’m going out and I’m selecting the Maximo domains and I’ve got a where clause to find all of the records or coded value domains associated with a work order status. That will then populate that. I’ll then just assign it to my form and that will get dynamically populated when the user launches the form, ensuring that the information that you’re interacting with gets properly assigned to Maximo.
That’s a quick overview of the activity pack. If want to get access to it, I’d recommend navigating to github.com/geocortex. That’s going to take you to our GitHub landing page. If you scroll down, look for “Maximo Activity Pack for Geocortex Workflow”. It’s free to use if you have a license for Geocortex Workflow.
You don’t really need to worry too much about any of this stuff, but if you scroll down it’s going to tell you how to register it. You just need to copy this URL and then you will essentially create an item for that inside of your ArcGIS Online or ArcGIS Enterprise.
If I want to then do that let’s log in. Now when you’re in ArcGIS online just navigate to your content. Click “Add Item”. In “Add an application” paste that URL. Give it a title, such as Maximo Activity Pack, and then it just needs a specific tag which is “geocortex-workflow-activity-pack”. Once you add that item you should be able to view those Maximo activities within your Geocortex Workflow instance.
That should be everything you need to get started with integrating Maximo with your Web AppBuilder and Geocortex applications. Bye for now!”
Want to learn more about how Geocortex Workflow can be integrated with other systems? Click the button below for more information on the capabilities of Geocortex Workflow.