Using Geocortex Workflow 5 to automatically display a form for editing layer attributes [Geocortex Tech Tip]

With Geocortex Workflow 5, authoring workflows has never been easier. With a library of 170 pre-built activities that chain together seamlessly, you can covert even the most sophisticated business processes into a simple, guided end-user experience.

One of the things that we’re really proud of when it comes to Workflow 5 is its ability to automate virtually any task, so we thought it would be fitting to show you in this week’s Geocortex Tech Tip how to use our Workflow technology to automatically display a form for editing layer attributes.


Watch on YouTube.

Video Transcript

“Hi, my name’s Jeff. I’m a software developer on Geocortex Workflow 5, and today I’m going to show you how to display a form using Workflow so that you can edit features in your layer.

Let’s get started!

So, I’m going to demo this for you today in the new Geocortex Mobile Viewer which means the Esri objects that we’re interacting with in this workflow are going to be from the ArcGIS .NET Runtime, so you might notice a few slight differences form the JavaScript API. So, to show our form we are going to use a display form activity, and I’ve gone ahead and preconfigured some activities for this workflow just to save time.

On our display form activity, we’re not going to configure any form elements and that is because we want to dynamically display the form depending on the layer that we have. To set the dynamic form elements we’re going to use the ‘load’ event handler in the forms header. If we look in here the first thing, we need to do is get the layer using the ‘Get Layer’ activity and I’m going to be using a web map that has a layer with the ID ‘Service_Request_8759’. That’s going to get our layer and the next thing we’re going to want to do is add a form element for each field in the layer. So, we’re going to iterate over the fields in the layer. You can see we’re going layer.featureTable.fields and this feature table is a .NETism.

The first thing we’re going to do on our ‘For Each’ loop is just assign the field to a variable, so that we don’t have to access each For Each loop current item every time so this is a Create Value activity. Then the next thing we want to do is check if the field is editable, so we’re going to check the ‘isEditable’ property. If it’s not editable then we’re not going do anything because we don’t want to display anything.

So, then we’re going to create an object for our form element and we’re going to assign a few properties we’re going to set the description to the field alias and I’m going to set the items to an empty object, which I’ll come back to in a few minutes. Next, we want to decide which kind of view UI control to create for each field.

The first case we’re going to handle is fields that have coded value domains so in this if activity we’re checking if the field has a domain object and if that domain object has coded values. If it does then we’re going to want to show a dropdown box with the coded value domains in it. So were going to iterate over the coded value domains so you can see ‘domain.codedValues’ in our For Each loop here. And the first thing we’re going to do in here is just assign the coded value to the variable, so we don’t have to access the For Each loop every time and we’re going to create an object for the form item.

The ‘label’ is going to be the name of the coded value and the ‘value’ is going to be the value of the coded value. And then we’re going to set this item on our form element object. As you can see, I’m targeting the items property of the form element object. And we have to assign it a unique ID so we’re just going to use the pass of the For Each activity and we’re going to call toString on it because it has to be a string ID, and we’re going to pass in the object we just created. Next, we’re going to add the dropdown list form item to our form and we’re going to do this using the ‘Add Form Element’ activity. We have to provide a unique ID, so we’re going to use the name of the field and we have to specify the type of form element that we want to use (you should get some intellisense in here), we want to use a dropdown list and we’re going to put in our form element object that we just created.

Next, I’m going to show you how to do a number field. So, for this we have to look at the fieldType property of the field and in .NET, this is a numeration that is backed by integers, so we just have to compare it to its integer value, so the value for an integer is one. So, we want to create a format object for our number to ensure it appears as an integer - so to do this we set the precision to ‘0’, meaning no decimal places are shown and we want to set the step to ‘1’.

Next, we want to set our format object that we just created on the form element object, so we’re setting the format property on our form element object to the format object that we just created. Once again, we’re going to use the Add Form Element activity to add this to our form. This time we’re going to chose number and we’re going to use the field name as the ID. So next I’m going to show you a string field. So, the integer value of field type for a string is ‘7’, so we’re just checking for a ‘7’ so in that case we want to add a TextArea form element to our form. So, it’s the simplest case using the field name again.

Alright, I’m going to demo this for you in the Geocortex Mobile Viewer now.

Let’s quickly take a look at the Json in the feature layer that I’m using here. These are the fields in the feature layer, and you can see I have a string field called ‘REQUESTSTATUS’ that uses some coded value domains; there’s three domains in there. I’ve got a regular string field called ‘DESCRIPTION’ and an integer field named ‘SEVERITY’. So, this the workflow that we made to show the form elements will cover all three of these fields.

Let’s pop open Geocortex Mobile Viewer and I’ll show you the workflow. So, this is just an extremely bare bones version of the mobile viewer that I’ve configured solely for the purpose of showing you this workflow. So, I have the workflow on the task bar and if I click on it, you’ll see that I’ll get one form element for each of the fields that are editable. So, I’ve got my ‘Status’ element which is a dropdown box. I can choose the value, the ‘Description’ field is just a string field, and the ‘Severity’ field is just an integer. So, if I type in that I can see that it is an integer and I can step up my integer values.

And that’s how we create a dynamic form for a given layer. Thanks for watching!”

Interested in trying Geocortex Workflow 5 for yourself? Check out our Discovery Center and explore everything Geocortex Workflow 5 has to offer!

Discover Geocortex Workflow

Geocortex Achieves Esri’s “Release Ready Specialty” Designation

Geocortex Achieves Esri's "Release Ready Specialty" Designation

We are thrilled to announce that Geocortex has been officially designated by Esri as a Release Ready Specialty partner!

The Release Ready Specialty certification recognizes companies approved by Esri who are constantly keeping pace with their technology, have strong industry expertise, offer solutions, services or content based on the latest Esri software releases, and help users make smarter overall decisions using the ArcGIS® platform.


We want our customers to feel like they’ve made the most of their investment in Esri, and a major part of that is ensuring that they are always aligned and optimized with Esri’s constantly-evolving technology. By working closely with Esri, Geocortex has provided compatible software with every major and minor release of ArcGIS within 10 business days of general availability since the release of ArcGIS 9.3. Further, Geocortex ensures customers can take advantage of new patterns, APIs and platforms that evolve as part of Esri’s development of ArcGIS.

Geocortex Essentials Enables Technology Change

As we look towards 2019, we are ensuring that Geocortex Essentials 5-Series software -- including Geocortex Workflow, Geocortex Reporting, and Geocortex Printing (coming soon) -- is ready for ArcGIS 10.7. Simultaneously, we are excited to unveil a new Geocortex Mobile Viewer based on the latest ArcGIS Runtime SDK for .NET, and a new Geocortex Web Viewer built on ArcGIS API for JavaScript 4.x in the coming months.

Stay tuned!


Celebrating GIS Day with York Regional Police: How GIS Data Has Mitigated Risk & Increased Efficiency in Crime Prevention

Today marks the 20th anniversary of International GIS Day! At Geocortex we’re always inspired by the positive stories were hear from our customers who are using GIS in new and innovative ways to help make the world a better place to live.

We recently caught up with Greg Stanisci of the York Regional Police to chat with him about their use of Active Operating Picture, an extension for Geocortex Essentials that helps respond to emergency situations with reliable information.


How were your operations being carried out prior to making the decision to integrate a GIS solution?

Greg Stanisci [GS]: Before integrating our Active Operating Picture (AOP) solution, our Real-Time Operation Centre (RTOC) had to go hunting for data on important issues, which meant they were seeking data all day long. Now, our GIS solution gives us that data immediately, helping us identify priority calls and better manage our resources, so the overall impact has been an increase in efficiencies and a reduction in the risks associated with the lack of awareness around not always knowing what our priorities are.

What were some of your GIS goals prior to adopting the YRP Active Operating Picture?

[GS]: We believed that mapping technology was one of the best ways to visualize police information and bridge communication between our officers. Everything we do is location-based, and we wanted to interconnect GIS with our team of analysts, investigators, front line officers, supervisors and senior officers to better collaborate and respond to situations.

It was our goal to support a more data-driven strategy that revolved around utilizing our resources in the most efficient way possible. Ultimately, we wanted to empower our force with data, and use that data to drive the way we plan our operations.

Can you explain how York Regional Police is currently deploying AOP technology?

[GS]: In a nutshell, we’re using AOP to provide more information in real time to and from the many different members on our team. This ranges from a variety of different applications such as enhancing road safety, preventing crimes before they happen, locating missing people, and accessing information about known offenders. AOP enables us to better streamline the way these processes are managed.

Additionally, the analytics we use in AOP helps us analyze our police presence in a given area to gain more insight into historical deployment patterns, giving us the ability to plan future front line deployment more strategically based on the data we’re receiving.

Describe your how AOP supports your Real-Time Operation Centre (RTOC).

[GS]: One of the primary functions of the RTOC is to mitigate risks to officers in our community. Thanks to AOP, our operatives no longer need to seek important information like priority calls and other alerts, how many units are assigned and whether officers arrived at their destination safely – the information is delivered to them directly.

AOP gives us visibility into which of our officers are currently in the field, the sectors they’ve been assigned to, whether they’re responding to a call, as well as the details of the call itself. AOP also warns us when a patrol sector is empty so that we can actively manage that risk as well. This helps us empower the people within the RTOC with more information, so they can better support our officers.

We’ve worked with our RTOC team to compile a list of roughly thirty different types of priority calls. These priorities can be displayed very quickly and easily for them to respond to as they occur.

How has AOP technology been used to better deal with countering crime in the York Region?

[GS]: AOP technology has allowed us to make more intelligent and proactive decisions with our resourcing. We’re able to put officers in the right place, at the right time. We’re also training officers to analyze the various data points, like heatmaps, to better understand where they’re most needed. AOP helps us leverage location based data to identify priority patrol zones for officers, like areas that have higher gun violence or gang activity as an example.

What have been some success stories that have occurred since onboarding AOP?

[GS]: We’ve diffused quite a few situations since we’ve started using AOP. It has been used to ID suspects that committed a string of commercial break and enters, including a string of thefts that took place at various liquor stores. The technology allowed us to link together a series of prescription fraud cases, ultimately helping us identify the suspects. We were also able to make key arrests to several wanted persons due to the data we were able to relay in AOP.

Thanks to AOP, our ROTC -- as well as front-line officers -- are able to help deter crimes happening in real-time, such as a terrorist threat at Canada's Wonderland amusement park, and a bank robbery that was in progress.

Have all your officers been trained on the technology?

[GS]: Currently, all frontline officers and investigators have been trained on AOP technology. AOP is being used in both their cars and on their desktops. There are also some civilian administrative groups that are using AOP for planning and crime analysis purposes.

Thanks Greg! One final question - are there any plans for further use of GIS in future applications?

[GS]: We’re hoping to get further use of the “after action playback” mode, which can playback events and how units responded throughout the day. This can provide context on where our zones were created and the maps we drew to better assess how we dealt with a response.

It is also our hope to soon run workflows that convert individual unit points to lines to see how our officers and platoons drove during that date. This will give us a better idea on exactly where we were patrolling on a street level and determine which neighborhoods require a heightened presence.

Another future idea we had in mind was to develop a site to track bail checks that are done by officers on the road. This would allow an officer to use a form that would then update on the map, preventing duplicate checks from taking place in a day.

Finally, we’d like to explore how our officers’ GPS alerts are generated based on if they’re in a priority zone or near know offenders or other types of hazards.

GIS Day In Your Community

Every year on November 14th, GIS Day gives us a special opportunity to turn the world into a forum for one day, advocating the impact that geographic technology has on our everyday lives in ways that we may have otherwise taken for granted. Around the world, organizations host educational sessions to spread information, solutions and knowledge on how GIS is improving operations everywhere to make our cities cleaner, safer, better resourced and more efficient.

For more information on GIS Day, we recommend visiting the official website. It offers plenty of information about GIS events happening in your communities, as well as treasure trove of valuable resources.

We invite you to share your GIS Day stories with us in the comments section below!

How to access a SQL database from a workflow using Geocortex Workflow 5 [Geocortex Tech Tip]

How to access a SQL database from a workflow using Geocortex Workflow 5

There are a lot of benefits when it comes to server workflows, a new type of workflow available for users of the newly released, on-premises version of Geocortex Workflow. Server workflows can read and write files that exist on the server, send emails (as Noah demonstrated last week), run Python scripts, send HTTP requests to secured web services that the end user can’t reach from their browser, and carry out some other heavy-duty types of processing requests.

In this week’s Geocortex Tech Tip, we wanted to show you yet another feature exclusive to server workflows that we’re really excited about: Accessing a SQL database from a workflow. By calling a server workflow to do a SQL database query, the server workflow returns a data structure to the client, enabling it for use with a workflow.


Check out the video below to learn how this process works!


Watch on YouTube

Video Transcript

“Hi, I’m Ryan. I’m on the Geocortex Workflow development team. Today I’d like to show you how to query a SQL database in Geocortex Workflow 5. Let’s take a look!

I have a workflow here and it’s really simple, it has to display form activity and it has a drop-down list asking to pick or select a customer from a list. Now this list (at the moment) is just a hard-coded list of options, but I would like this list to be populated from a database. It’s something that we can normally do through an ArcGIS query, but that’s using the ArcGIS REST API to perform that query. If we want to go direct to the database, that’s something that hasn’t been possible until today inside Workflow and we’re going to use a new features called Server Workflows that are available in Workflow 5.8 and the on-premises version of Workflow.

What this is going to allow us to do is create a whole new type of workflow that is going to run on the server and it’s going to do our work to actually query the database for us. It will have access to activities that can query the database and then it will return us some results so that my client workflow, the workflow the end user is interacting with, can basically call the server workflow as if it were a web service. So, what we’re going to do is create a brand-new workflow and this is going to be my server workflow and I’m actually going to tell it that it’s a server workflow by switching to the info panel and selecting ‘Server Workflow’. This is going to change the toolbox to have a different set of activities that are available and some of the really powerful ones here are the SQL query activities.

So, the SQL query activity - a connection string - is going to allow me to define my query. I’ve set one up in advance here so I’m going to just populate the providers, this is going to be a SQL server database. I’m going to plug in a connection string, this is just some database sitting on the internet that we can use. I’ll quickly show you this table. It’s just a Microsoft Northwind database. There’s a customer table and it’s got a contact name field, and this field is what I want to populate my results with.

I’m going to run this query, and this is going to provide a data table output and what I want is this server workflow to provide that data table as the output to the workflow itself. There’s an activity called ‘Set Workflow Output’ and I can provide whatever name I like for this output, so I’m going to call it ‘contacts’ and the value is going to be sqlQuery1.dataTable, so just the result of that data table. When I save this, I’m going to call this ‘Customer Server Workflow’.

Okay, so my server-side part is done - it’s going to do a query and is going to return that data table as adjacent data structure to this client workflow and the client workflow - rather than using this manual list of options in that drop down - I’m going to change to use a sub workflow and I’m going to just start with a blank one.

Now in this, I want to run that server workflow, so there’s a run workflow activity, and I need to give it a URL. If I go back to my server workflow on the info panel, I can copy the URL, paste that in. That workflow didn’t have any inputs or arguments, so I don’t need to supply any, but it is going to provide a result and then what I want to do is I want to take that result - which will have a data table on it - and convert that data table into something that the form is going to be able to use. There’s an activity called ‘Get Form Element Items From Collection’ which will do that. So, the collection in this case is going to be my runWorkflow1 result, and contacts was the name of the property that I had assigned on that so we’re going to take that contacts collection, and I’m going to provide the name and value of that dropdown list (I’m going use the same field).

The last thing we need to do here is set form element items, so we have to actually tell the dropdown list to use these items. If I save that I should be able to run that.

I’ll just run this in the sandbox and there we go! I’ve got my list that’s coming from the database and if I pick a value and submit it, the reminder of my workflow is just to alert that value back, but we can now go on and do something really useful with that.

So, there you have it, we were able to create a client workflow running in the web browser. It calls a server workflow when it needs to do something server specific like do a SQL database query or send an email or some kind of server processing. That server workflow returns a data structure to the client and then the client is able to use that and carry on with that workflow.

So that’s how you do a query SQL database inside Workflow 5!”

Geocortex Workflow can extend your Web AppBuilder applications by turning even the most sophisticated business processes into a set of simple, guided end-user interactions. Check out our Discovery Center and explore everything Geocortex Workflow 5 has to offer! 

Discover Geocortex Workflow

How to send an email from a workflow using Geocortex Workflow 5 [Geocortex Tech Tip]

How to send an email from a workflow using Geocortex Workflow 5

November is an exciting month here at Geocortex, as we’re thrilled to announce the release of the on-premises version of Geocortex Workflow!

To commemorate this release, we thought it would be very fitting to have our next few rounds of Geocortex Tech Tips focus on our Workflow technology.


One of the key new features that the on-premises version supports is a new type of workflow called “server workflow”. These workflows execute on the server as a web service, compared to normal workflows that execute in the end user’s web browser, meaning that server workflows ultimately have access to resources that otherwise couldn’t be reached from a web browser.

An example of one of these resources – and where we thought we’d focus this week’s Geocortex Tech Tip on – is how to send an email with an attachment using this new server workflow. These emails can include multiple recipients including both CC’s, BCC’s. Check out the video below to learn how it works!


Watch on YouTube.

Video Transcript:

“Hi, I’m Noah and I work on the Products team. Today we’re going to learn how to send an email with the on-premise version of Geocortex Workflow 5. Let’s take a look! 

So, today we’re going to learn how to create a server workflow that can send an email to a user with an attachment.  

Right in front of me I have a client workflow which asks the workflow runner for a username and an email address and then runs a server workflow which is going to send our email for us.  

Over here I have the server work form running. Right now what this server work flow does is it gets the workflow inputs with that username and email address, and it reads a data file for us. The data file is just some csv data that we're going to put in our email as an attachment. 

The first thing we want to do is create the attachment to put on to the email. The content of the attachment is going to be our file. It’s going to be the bytes from Read File Bytes. Our content type is going to be text/csv since we’re reading since we have a csv file, and our file name is going to be data.csv. This produces an attachment object and as you can see here, 'This object should be passed to the Send Email activity’, so that is what we are going to sue next.  

The send email activity has a To, a From, a CC, and a BCC, and the To, the CC and the BCC can all take either one value or an array of multiple values. For the value of To, I’m going to just use one value which came from our client workflow; it is going to be the username. Let's look for the user’s email. It's called email.  

Now From, let’s use my own email. For CC, let’s CC a couple people just to show how the array works. I'm going to create a new array with the equal sign and then a square bracket and lets CC ‘' and ‘'. You could add as many emails as you like to the CC, the BCC, or the To fields on the send email activity. Let's leave the BCC empty. Let’s make our subject ‘Email techtip. Now the email body can either be an html body or just plain text. Let's make it some html.  

First, let make a header. And let's make the header say ‘The Data’. Then, let’s make a paragraph and let’s address our user. We’re going to grab the user input we got from earlier. We’re going to go to the inputs, and we’re going to get the user field. Let’s end our paragraph and end our string. Here’s a little html body with some user input writing here. Now one important thing to know is that it can be dangerous to let users input their own information into an html string, so what I did in the client workflow is I made sure to escape the user input and make it safe. Let’s go back and see that.  

The users input, prompt1.result is passed into the encodeHtml function. This function ensures the users input is safe to put in an html string.  

Now that I have the body all set up, let’s attach my attachment from earlier. And then, let’s say true to Is Body Html, so the email will actually render it as html and not plain text. Let's save our server workflow, and let's go back to the client workflow, and let's run it in the sandbox!  

Let's send the email to myself (just cause then I can open it and we can see). The email got sent! Let’s go and check my inbox and see what’s there. There it is, 2:37pm! Here’s the html heading that got rendered. My name got injected right in here, and the data got attached and we see CC’d', ‘', and it’s to me and it is from me. Let’s open up the data and just show that it got transferred correctly. Yup, that looks all good.  

So that is how you send an email using Geocortex workflow 5 and the on-premise server addition of Geocortex Workflow.” 

Geocortex Workflow can extend your Web AppBuilder applications by turning even the most sophisticated business processes into a set of simple, guided end-user interactions. Check out our Discovery Center and explore everything Geocortex Workflow 5 has to offer! 

Discover Geocortex Workflow

How to add and configure charts inside reports with Geocortex Reporting 5 [Geocortex Tech Tip]

How to add and configure charts inside reports with Geocortex Reporting 5

When it comes to charting, Geocortex Reporting 5 offers a vast amount of highly-configurable options to better assist you with visualizing your data. Using the Chart Designer feature, you can enjoy total flexibility and control in what information you want to portray, and how you want it to look.

In this week’s Geocortex Tech Tip, we explore how to add and configure charts inside of a report using an example that highlights the land value and the improvement value of each tax parcel on our LA StreetMap server. 



Watch on YouTube

Video Transcript

“Hi everyone, my name is Patrick Fingler. I work in our technical marketing department, and today I’m going to show you how you can add and configure charts within your reports using Geocortex Reporting 5.

Let’s take a look!

Okay, so in this tech tip video, I'm going to show you how you can configure charts within your reports using Geocortex Reporting 5.

Here I am in the Geocortex 5 designer interface. I've logged in with an ArcGIS Online identity, I’ve got a number of data sources that I have configured, and in this example we’re going to configure a chart using the tax parcels layer on our LA StreetMap server. I have created the data source connection to this map service, I can test it to make sure that it is working, and the next thing I am going to do is create a new report.

I’m going to use the Layer Report Wizard which allows me to use an existing data source, and then select my LA StreetMap data source here, and select my Tax Parcels layer that I am interested in. The nice thing about using that wizard is that it will already create a parameter for my ObjectIDs. So now if I preview this quickly just to make sure it’s working, I can see that I am creating a report that’s being run on those four ObjectIDs that I passed in. It’s a super basic report, but we can identify that it’s working.

Now let’s look at the attributes for our data. I’ve got a tax parcels layer and a variety of different attributes, but I am going to create a bar chart highlighting the land value and the improvement value of each tax parcel.

To begin, I am going to select our chart port element and run the designer. The first step you are going to want to do is create a new series. This is where you can define the type of chart you want to create. I am going to create a bar chart and now the next step is populating the data within this series.

This series accepts two things: an argument and a value. The argument is what you want to display on the X-axis, so this is going to be my tax parcel IDs and the value is going to be, in this case, my land value. I might want to enter that in the legend text to ensure that we know what we’re creating a chart on. So that’s pretty basic and we can confirm that this is working by entering in some IDs. We should see a pretty basic chart that is displaying land value for those five tax parcels.

What you can see here though, is that the same chart is being repeated for each feature and that’s not really ideal in this scenario. So, what we are going to want to do is actually move this chart outside of the Detail band. In order to do that, I can navigate to this Actions panel and insert a report header which will allow me to copy or move this chart into the Report Header, so that it is only being displayed once on the first page.

So again, if I re-ran this, we’ll see that the charts are being only being displayed once rather than five times. So, let’s start configuring this chart a little bit more!

The next thing I might want to do is create a new series to show my improvement values. I’m going to create a new bar chart. You can see it side by side. It’s important to note that I am going to want to select the same argument because they’re both using reporting on the tax parcel IDs but the value in this scenario is going to be the improvement value. One thing to also highlight is that all of the values in this example - at least for a bar chart – are integer or double values. You can’t have string values in here, so that important to note.

I’m going to select the improvement value and I’m pretty happy with that. Optionally if I wanted to change the colors of each of these bar charts or series, I could then manually start changing the fill style, choosing the colors of it, and make it solid etc. But in this example, I’m going to just use the default colors.

If I click preview, click run, we’ll see that I’m starting to get values here. Now, I don’t really like them side by side, it takes up a lot of space, so I might want to actually change this from a bar chart to a stacked bar chart and I can do that because they’re using the same X-axis. So, in this example, I might want to change this from a bar to a bar stacked and it’s important to do this for both series. I'll change that from a bar to a bar stacked.

If I wanted to, I could also change the diagram or the axis titles by navigating into the primary axis and the primary Y-axis and adding a title. I’ll call the title for the x axis ‘Tax Parcels’. I’m going to set the visibility to True and the primary Y-axis is going to be the ‘Home Value’. And one thing I forgot to do is set the title for that. So, I’m going to go back into my series two and set the legend text to ‘Improvement Value’ so we know what we’re creating a chart on.

I'll click preview, and I’ve got a nice stacked bar chart. Now I could additionally change where the legend goes, I might want to move this over here, so it looks a little better. I might also want to create a chart for each specific feature. If you want to do that, there’s a little tip that I can show you.

I’m going to copy this chart into the detail band. What I’m going to do, is I’m going to add a filter so that we’re only showing the specific chart for each specific tax parcel. In order to do that, you are going to navigate on each series - it’s important you do that. And we’re going to navigate down the Data Filters section here. We’re going to create a data filter, and in this example, I’m going to set the input as the tax parcel ID (I could also use the object ID as well in this scenario).

I’m going to set the report value as also the tax parcel ID. It’s important again I do this on both series, otherwise it won’t work. If I click ‘OK’ and now click ‘Preview’, what we’re going to see is a report showing one chart that shows all five charts or series. For each detail, we’re showing just each specific one, so we’re kind of zooming into each of these. The second one is not going to have anything, and this third one is going to have is going to have a little bit more, fourth and fifth and so on.

That’s pretty much the charting configuration within Geocortex Reporting 5 in a nutshell.

Hope you enjoyed it. Thanks for watching!”

Want to learn more about how Geocortex Reporting can augment your Web AppBuilder applications? Check out our webinar, Enhancing Web AppBuilder for ArcGIS® with Geocortex Reporting.

Watch Webinar

Geocortex Water Webinar Series

geocortex water webinar series

Water is the most valuable resource on Earth, and controlling it effectively is both vital and complex. Whether it’s safeguarding source water to avoid the contamination of potable water, establishing a better asset management program to meet appropriate permitting requirements, or having a detection and response plan for extreme water events like flooding or droughts, there are a considerable amount of factors that go into how water is managed in our society.


The Need for Data

When it comes to handling these many different elements, data is essential for monitoring and improving the systems that are currently in place. For example, if a fire hydrant is rusting and in desperate need of repair, that information can be identified, flagged, and tracked through a GIS solution like Geocortex.

Web GIS & Water Management

Recently, we wrapped up a three-part series of webinars that examines just how much of an impact web GIS has on the way water professionals simplify their tasks and overcome unique business challenges.

Each webinar explores key areas where web GIS is improving the water management process while also referencing how specific cities are currently deploying both Geocortex and other asset management software to help solve their problems.

To view the webinars, please click the button below and provide a bit of brief information.

Watch the Webinars


Integrating Geocortex Essentials with ArcGIS Online and ArcGIS Enterprise portal [Geocortex Tech Tip]

Whether you’ve been building against ArcGIS Server, or you’re just getting your feet wet with ArcGIS online, Geocortex technology is built to enable change, allowing for easy and seamless integration with the ArcGIS platform in its entirety.

 In this week’s Geocortex Tech Tip, we take a closer look at the intrinsic nature of web maps, and how Geocortex Essentials can be integrated with ArcGIS online and ArcGIS Enterprise portal.



Video Transcript

“Hi, my name’s Drew and I’m the Chief Technology Officer and in this Tech Tip we’re going to explore how Geocortex Essentials can be used alongside ArcGIS online, or your ArcGIS Enterprise portal, so let’s dive in!

So I think we’ll start with some context surrounding how to connect Geocortex Essentials to the ArcGIS platform. For many years, our customers have been able to connect Geocortex Essentials directly with ArcGIS Server. Public services can be connected to directly, or we can use token or Windows authentication to connect Geocortex Essentials sites to ArcGIS Server map services, feature services, tiled services, and other types. Applications produced by Geocortex Essentials can also connect to ArcGIS Server through that same authentication method.

ArcGIS Online, portal introduced Web Maps, and that’s really the central currency in the geoinformation model. When we used Geocortex Essentials with ArcGIS Enterprise or ArcGIS Online, web maps become an intrinsic part of this equation.

Here we can see multiple users or groups of users signing in to a portal. This can be ArcGIS online or an ArcGIS Enterprise portal, and they’re using their ArcGIS identity to do so, and then they can create web maps inside of this organization. Those web maps can be shared and used within apps like Operations Dashboard, Collector, or Web AppBuilder-based applications so that other users can use those apps that consume the web maps.

If we add Geocortex Essentials to this picture, users can sign in with the exact same ArcGIS identity that belongs to their portal (or ArcGIS Online org). Then, when we author a site, the identity’s credentials are used to fetch content, like the web map. So the very same web maps can be referenced inside of a Geocortex Essentials site. Then apps created out of Geocortex Essentials can be shared back in that portal, increasing the use of GIS throughout the organization.

Let’s have a look at this pattern in practice.

Here’s a web map that I want to use in a Geocortex Essentials application. It contains store locations and it’s stored inside of my ArcGIS online organization.

I’m going to sign into Geocortex Essentials using my ArcGIS online account. Once I’ve signed in, I’m brought to a list of sites that I’m able to manage. This time, I want to add a new site, give it the display name “Stores”, and I’m going to reference a web map from ArcGIS Online to create my application.

Now, I can search the public database for content, or I can hit this checkbox and refine the search results to only the web maps that are inside my organization.

Notice the lock icon indicates that this web map isn’t shared with everyone. That means end users of my application are going to have to sign in with their ArcGIS identity to access this app.

Geocortex Essentials makes a reference to the web map and understands all of the content within it. So it has an understanding of all of the map services and layers that are used within this web map, and now I can start to author my application within Geocortex Essentials Manager.

Let’s add a viewer to this application using our HTML5 viewer template. Without making any configuration changes, lets launch this in a new browser window.

Now, transparently and behind the scenes, I was signed in to this application. In the top right corner you can see that I can sign out and that I’m currently signed in using my ArcGIS Online account. The reason I was signed in is because the web map inside this application is protected. If I sign out, I’m prompted to sign in using my ArcGIS identity. If that web map is shared and made available to everyone, the end user is not required to sign in using an ArcGIS identity or otherwise.

Now that I’ve built an application, I can publish this back in to my ArcGIS Online organization and share it with other users or make it one of my favorites. Notice that this have been given an item ID, and if I click on this link, I’m brought to my ArcGIS Online org, where I’ve got my Stores application. Clicking on this will simply launch my application.

For now, I’ll simply add it to my favorites. If I go into My Content, and then click on Favorites, there’s the Stores application that I just published from Geocortex Essentials.

You can see this pattern in action using Geocortex Essentials to build applications, share them back inside of your ArcGIS Online organization, or inside of your portal so that they can be used by more users.

Geocortex Essentials 5-Series applications also integrate with ArcGIS Enterprise and ArcGIS Online. Here we can see three example applications – Printing, Workflow, and Reporting. An ArcGIS identity is used to sign in to the design experience of these apps.

Once we’ve signed in, we can create content in the form of items. With Geocortex Workflow for example, the item type is a workflow, and with Geocortex Reporting 5, the item type is a report template.

These items are stored inside of the ArcGIS Online organization or within the ArcGIS Enterprise portal alongside apps and web maps and other types of content.

Those items can be used by Geocortex apps or within Web AppBuilder for ArcGIS apps so that more Geocortex content can be shared with other users within the organization.

Now, lets explore this pattern. I’m going to sign in to Geocortex Workflow. I’m using my ArcGIS identity to sign in so that I can restore a workflow that I created earlier. In the File menu, I can browse all of my workflows that I’ve authored, workflows that have been shared with me, or - if I have the URL to a workflow the item ID, and the URL to my ArcGIS Online organization - I can open it that way.

The workflow I’m looking for is one that I worked on recently. This workflow is called “StoreFinder” and it does just that; it allows the user to search for stores inside of the map. I’ve got a search form prompting the user to select from a list of store types, and once they select a store type, if they click search, we’re going to query the stores layer based on the center type that the user selected. Then we’re going to get the extent of the results, set the map to that extent, and then simply display the results in a list. It’s a pretty simple workflow.

If I go to the Info tab, you can see that this workflow is stored inside of my ArcGIS Online organization, and it has an item ID. I’ve named my workflow “StoreFinder” and it’s got a unique URL used to discover it.

Now, if I sign into Web AppBuilder using that same ArcGIS identity, I can access that workflow.

Let’s go to the widget tab in the authoring tool, and add a new widget to my application. I’ll use the workflow widget (which I’ve installed earlier), and I’m allowed to browse for any workflow in my organization. I can look for my content, my organization, groups, and even public workflows.

Using the keyword search “StoreFinder”, I was able to discover the workflow I authored earlier.

Now I’m just running through the workflow inside of my Web AppBuilder designer experience. Let’s look for all strip malls on this map.

You can see that the results are highlighted and then the workflow displays an item picker, allowing me to hover on each result and show the corresponding record on the map.

That’s an example of how Geocortex Workflow 5 was used to integrate with an ArcGIS Online organization by storing an item and consuming it inside of a Web AppBuilder for ArcGIS app.

The idea here is that you can deploy Geocortex alongside other ArcGIS applications that you have that are also consuming web maps. Collector, Operations Dashboard and Web AppBuilder can all be used alongside Geocortex Essentials.

We’ve built Geocortex Essentials to allow our customers to enable technology change. Whether you’ve been building directly against ArcGIS Server, or you’ve started to work with ArcGIS Online, or ArcGIS Enterprise, Geocortex Essentials has technology for you to integrate with the entire ArcGIS platform.

Thanks for watching this short Tech Tip. I hope you learned something today.

Bye for now!”

Want to learn more about how Geocortex Essentials can help organizations of any size or industry address business challenges? Check out the Discovery Center to get a feel for the product.

Discover Geocortex


Cross-Platform Development with Xamarin [Webinar]

Cross-Platform Development with Xamarin

Using Xamarin.Forms allows you to construct native UIs for iOS, Android and Windows mobile devices from a single shared C# codebase.

Over the past few months, the Product Development team at Geocortex has been using Xamarin.Forms – along with the ArcGIS Runtime SDK for .NET – to create a new, next-generation mobile viewer. We learned a lot of valuable lessons in the process, and we’re excited to share them with you!


In this developer webinar (or devinar, as we like to call it), Spencer and Jeff break down how to get started, some of the challenges they faced, and how to create reusable form components to support Geocortex workflows on mobile devices.

If you’ve been thinking about deploying Xamarin.Forms for an upcoming project, you’ll want to check this out!


Watch on YouTube

City of Fort Collins: Dynamic flood maps for public awareness, and flood insurance rate saving

Located against the foothills of the Rocky Mountains and home to Colorado State University (CSU), The City of Fort Collins offers a diverse culture, educated and engaged citizens, outdoor recreation, and a thriving economy. Throughout the year, live music, entertainment, and great local dining can be found throughout the historic downtown area.

The City needed to build a dynamic flood mapping application that showed live rain gauge and stream flow information while also complying with FEMA’s Community Rating System requirements (CRS), a voluntary program that provides discounts for citizens on flood insurance.


Using Geocortex Essentials, workflows were developed in such a way that users could go directly to the City of Fort Collins website to view stream flows in a simple, streamlined way. This new solution was used for both spreading public awareness and providing more information to the citizens of Fort Collins on where the floods are occurring during rain events.

Since using this dynamic flood mapping solution, the city was not only able to save money on flood insurance from their involvement in FEMA’s CRS program, but they were also able to achieve a CRS Class 2 rating, which only six other communities in the United States have been able to do.

 Read the City of Fort Collins customer story here.