Following up on last weeks post, this week we will look at using our Azure Function app to post work item information from a custom task in the Cireson Portal to Slack.



SCSM + Cireson Portal API + Slack = Better Together, Part 1

This is an updated post, the original is found here.

As the services lead for Cireson I’m always looking for new ways to facilitate communication among my team. We have many brilliant people here and increasing the efficiency of our communication is a part of what separates us from the pack. We have a mantra here at Cireson that says when we tackle an engagement we ‘bring the team’ and that is more true today than it ever has been, and It’s my job to make sure that gets better and better.

In that regard we’ve been using Slack to improve our inter-team communication. I won’t go into the details of Slack or it’s capabilities here, other than to say that is is a Web 2.0 IRC like chat client and more. It has dramatically increased our real-time communication within the team and improved our knowledge and solution retention, but for this article I’ll focus on a feature called ‘slash commands’.

In essence a Slash Command is a user configurable API call to an outside web interface using a JSON formatted payload. At a higher level it’s a command that sends out a request to another website for information or to post information. Here is an example:
In this example I can type a simple command:

/getkb 75

And I’ll get this Knowledge Base article summary back from our Cireson Support Portal:


Now, this is just one example. We’ve also integrated Incident retrieval, knowledge article search, daily new knowledge article and new announcement notifications, and soon we will include a notification for new incidents that have been created.


All of this provides us with easy access to the things we use most often within a single interface. It also works via the mobile Slack application and brings the needed information directly into the conversation within the context of the request. It’s even searchable later and the answer (KB) is displayed right inline with the question or discussion.

I know, this all sounds great, but how does it work!? At a high level it works like this:

  • We setup a Slash command for each function in the Slack admin settings and point it to our custom web service
  • Each time the Slash command is run it sends the requested information to our custom web service that pulls required information out of the payload
  • The web service then utilizes the Cireson Portal API to retreive the required information, translate it into a format that works with Slack and then posts it back into the channel in which the request originated
  • For the scheduled tasks and notifications we use a simple Azure webjob that runs on a schedule, hits the web service and performs that same operations depending on the task

All of this is made possible thanks to the Cireson Portal API, where we can use an authentication token to perform JSON calls and retrieve data from Service Manager easily in order to put that data anywhere and in any format we could want.

In later blogs I’ll go into further detail on the Cireson Portal API, how it’s used and the internals of the custom web service we’ve created to utilize it. Beyond that though, what if we wanted to get data out of Service Manager and into Slack?

That will be the focus on my next blog in this series.

Cireson Survey App – Sneak Peak

Here at Cireson we work hard to breed internal and external innovation. Today, I would like to give you a sneak peak at our Survey App that started as Internal project with the purpose of boosting External innovation, and based on the interest we saw became something even more.

Later this month we will be releasing our ‘Survey App’, a web based application built on the Cireson Portal using Service Manager as the data back end, through our Release Candidate Testing Program. In a second I’ll briefly discuss how it works, and why it’s an example of what any custom can do with the Cireson Portal and Service Manager. I’ll also give you a few sneak peak screenshots of what’s coming…

Continue reading “Cireson Survey App – Sneak Peak”

Advanced Request Offering – Last Modified Date Solution

Wanted to bring this to everyone’s attention that might be using Cireson’s advanced RO or looking forward to using it as they upgrade to the recently released version 5.0.

Basically, when you install the ARO MP it overwrites the last modified dates on all work items as it adds the required properties for the ARO to function. While this is a major load on the system, for some customers this is a critical issue in terms of how they manage their work items.

A crafty customer came up with a solution on his own and you can find it here:

Customers always amaze me, and this is a great example of that! Good work!

Lost Single Item Array in Powershell Array to JSON Conversion

I thought I would throw this out there for anyone possibly running into this issue. Basically, when converting a PSObject to JSON in Powershell, I had an array that only had one value in some cases. When this happened the conversion would unpack the array and I would get the @{} at the root level of the property instead of an array:

Continue reading “Lost Single Item Array in Powershell Array to JSON Conversion”

Cireson Portal: Dynamic Forms by Template ID, Part 2

Continuing from our last article we are going to move forward with the process of automating the display of our designated custom tab, but first lets do a quick review.

The last entry is available here: Part 1

Last time we worked through the basics of why you would want to use a solution like this, as well as how we can customize a portal form to display our custom property extensions for the workitem classes, and now we are going to discuss how we can manipulate the form on load to display the custom tab automatically based on the template id of the form.

Continue reading “Cireson Portal: Dynamic Forms by Template ID, Part 2”

Cireson Portal: Dynamic Forms by Template ID, Part 1

We’ve had a large number of requests for this sort of functionality, but if you aren’t one of the customers making this request then you may not entirely understand what we are talking about here. What I mean by dynamic forms, is that the SR/IR/CR form changes the fields it shows and the ordering of the fields as you see fit based on the template id of the WorkItem. Let’t look at a few scenarios where this would be useful.

One common scenario is when you have a particular Request Offering in the Service Catalog that serves a very particular purpose, most commonly something like a project request or a new user access request. In either of these scenarios the general information you might be requesting from the user is not going to fit readily into the standard fields for the service request.

With this in mind you are left with a few options. You can extend the service request class to contain additional fields to hold this information and name each field according to the information it will contain, or you can extend the workitem with a generic set of fields to contain the information from both types of request (we consider this best practice), or you can try and fit the information into the default fields. For this article we are going to work with what we consider to be best practice.

Continue reading “Cireson Portal: Dynamic Forms by Template ID, Part 1”