One of the more mundane processes of administration of any system is the Onboarding/Offboarding process. Here we will take a quick look at how you can automate your workflow process using https://api.switchvoxuc.com to automate your onboarding/offboarding processes.


Background

It is assumed here that you have some experience with light programming tasks and scripting. Not everyone has the skills, that's ok. You can do all these tasks thru the web interface manually. But let's face it, that's not as exciting or as rewarding. 


For those of you that are command line or editor challenged, you may want to check out automation tools such as https://integromat.com or https://zapier.com as alternatives that offer some modeling flow control in a visual way. These are by all means not required but for some are very helpful.  

HINT: You will use either an application specific to your collection tool of choice or a 'webhook' for your data input to start any of these processes, that is to get the day "into" one of the services. From there you can use the individual services tools to integrate with other providers' software packages, do data manipulation and return records.


BIG HINT: Any service not listed with these services, you just use a webhook or HTTP to send/receive data from any external web service. Like interfacing with our api.nwsip.com and api.switchvoxuc.com services. Or your internal custom applications. There is nothing you can not interface with.


Collecting Data

The first part of any automation is data collection. How you do this is up to your workflow. You could use a google form. A CSV file, or any other collection method such as a ninja form or gravity forms in a WordPress page. What you use does not matter so much as that you are able to ask the user to enter the required data so that you can make an intelligent action based on that data source. 


But what data do you need? For your Switchvox, you need a few things. 

  1. An extension
  2. First Name
  3. Last Name
  4. Email Address
  5. password
  6. voicemail pin

There are some other options, just look at the manage users page, but the above is 'required'.  But that is not enough. You may have other business requirements based on your deployment. Such as which 'Groups' a user belongs to. Assigning a phone to a user (Or enabling hot-desking... you really should). You may have other systems that you need to add information to a CRM, email server, or internal system. All of those can be performed as part of your onboarding process. And you really should. Using a tool like Integromat will allow you to break those sub-processes off into smaller manageable chunks that can grow with you. When a process changes, you only have to adjust one branch. 


The choices are practically endless when using these tools. Let's take a quick mock-up.


  1. Collect User Data from a google form.
  2. Create the user account in your AD/LDAP
  3. Create an email for the user.
  4. Send users an SMS informing them of their new email address and instructions for access.
  5. Create a new user on the phone system
  6. Store the new user account_id
  7. Assign the user a phone number for 911 usage.
  8. Create a 911 Address record
  9. Assign the 911 Address record to the assigned phone number.
  10. Assign the user to a group in your phone system.
  11. Create the new user in your CRM
  12. Update the CRM with the details of your New use, including the phone number, address, and their account_id.
  13. Generate a welcome email to the user with instructions of the next steps they need to follow.
  14. Generate login credentials for the user.
  15. Generate an employee handbook for the user.
  16. Generate an e-sign document for accepting the handbook.
  17. Open a ticket for IT to provide the user with a workstation and phone setup.
  18. Schedule the deployment date and time.
  19. Notify your internal systems that the tasks have been completed or of errors.
  20. Enjoy a coffee, maybe you send your employee a $5 Starbuck card.


Wow, that is a lot. And it's so much more than just one system, and it's all related and interlocked. If you are not using an automation tool, to help keep these processes in place, you better be pretty good at documenting all the steps involved. My bet is if you are reading this, you already are having those management issues as these things tend to get out of hand quickly. 


You will see that what we did here was to create a list of what needed to be done. That list could move around grow shrink consolidate etc. but the first step is to make a list of what needs to be done. and in what order.  If you can not do this, you will not succeed. 


Let's go back to our example. Collecting input. If you use something like Integormat, you can connect to a google form. (you will have to create it first)



So I created a simple form


Inside Integroma add  Google Forms object and select "Watch Responses"



You will have to set up your connector to the form, online documentation from Intgromat is pretty good and available in each of the models.  HINT: There is even a google form plugin to automatically interface with Integromate when an update is made to your form. Using the plugin will help you with data transformation in complex forms. I recommend using it. 



Now as this demo is just about how you can automate the tasks, we are not going to automate out to all the services here, but instead, we will send data to https://httpbin.org which is a free echo service. Basically, you can send anything to it and it will return it back to you. So we will use the HTTP module to send data to an endpoint. Our specific endpoint here is https://httpbin.org/anything but this could just as easily be api.switchvoxuc.com or api.nwsip.com or your CRM's API endpoint. Whatever is the step you need.



When you are creating these clicking in the different fields you will get popups letting you select data from the other previously populated modules. This makes it really easy to make sure you are getting just the data you need. 

Notice that in our example we are using a RAW JSON body. This allows us to create the JSON payload 'exactly' the way the endpoint wants it. Super powerful. Really easy.


We use Mattermost for internal messaging, I want to send a message to everyone in our team that we have a new member and to say hi. 

Again you see when you enter any of the fields you can simply select from the pre-existing body messages of which field I want. In this case, we crafted our message, and are using the First Name as the variable to get populated. I also specified that this message will go to our 'off-topic' channel, basically a channel for non-business-related stuff. 


So in our example, we now are collecting some info, submitting it to an external website, and sending a message to our internal messaging. (this could have been google chats or slack as well.)



Pretty good. We got the basics in place. Now let's test it out. Go submit some data on your form and click the "Run Once" button in integromate. It will collect the data and let you see if you have a mistake or need to make adjustments.



Oh boy look at that, Each of the successful steps has a little chat bubble. By clicking on them we can see the data that the module received. Lets take a peak at the HTTP module 


We can see that it received a JSON payload (like we formated it) and the variables have been replaced with our data. Awesome that worked. 


But we also see an error on our Mattermost connection. Clicking the red triangle will show us the runtime error. Umm. Looks like we have an error on our server accepting the data we submitted. Because we got an error back we can go resolve that issue, come back, and run it again. We could also add an error handler as it suggests so that we can capture the error and make an intelligent decision based on the status of the error.


Error handling checks allow you to get creative. Say for example you wanted to open a support ticket for a failure on your automation. You can do so. Capture the error and submit the response to your ticket system integration. Or send you yourself an email. (In our case the method is blocked). So let me swap it out for Telegram


And there you have it, a successful message, sent to our notifications. I should go say Hello to the new Ben. 


But wait... you might have noticed we didn't talk about any of the "response" objects from the HTTP Module. 

So lets modify the telegram bot to include one of the fields from our HTTP module. For simplicity, I will just show the URL but I could have selected from any of the objects returned 

Submitting a new record I can see the result 

There was the URL. 


Using this simple process you can interact with ANY API and any web services to submit and retrieve data.  Including our APIs, CRM's even your website visitors can submit a request that starts off a process.


The tools in Integromat and zapier, as well as many of the other automation workflow tools, differ in how they function but all provide the basics. HTTP / Webhooks popular SaaS services, and some methods to perform basic data manipulation such as looping thru data results and extracting information to pass on to the next step in the chain.


These tools are excellent for non-programmer that needs to interface with API's and other services to automate their workflow and cut down on data entry errors and delays. 


Feel Free to add as many branches and steps as you need no matter how complex or what services you use.