Code Monkey home page Code Monkey logo

automationorchestrator's Introduction

Automation Orchestrator

The Automation Orchestrator allows you to run a local Django Web Application to administrate and orchestrate automation scripts such as Nintex RPA botflows but you may also orchestrate other automation such as Python scripts, batch files, and other RPA tools. The Automation Orchestrator is tested with and supports Nintex RPA version <= 15.1.

Table of contents

Introduction

As described on the official Django project site, it "is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source."

Some of the biggest web platforms and brands like Instagram and Pinterest use the Django Framework due to its leading security features and ability to scale.

The purpose of the Automation Orchestrator is to offer a well-functioning, fully customizable web server application to trigger and schedule scripts. The Automation Orchestrator can run as a fully local server only available on the local host accessible via a browser or as a server available in your protected internal network accessible via a browser.

Feature highlights out-of-the-box:

  • Authentication & Authorization
    • Groups
    • Users
  • Setup
    • Bots
    • Apps
    • Botflows
  • Notifications
    • SMTP accounts
  • Triggers
    • API Triggers
    • Email IMAP Triggers
    • Email Outlook Triggers
    • File Triggers
    • Schedule Triggers
  • Botflow Execution Log
    • Queue Functionality with License Awareness and Botflow Priorities
  • Native Script Support
    • Python
    • Nintex Foxtrot RPA
    • UiPath
    • VBScript
    • Any other tools that can be executed as a command with: "application_path.exe" "file_path.abc"
  • Dashboard
    • Graphic Execution Overview
    • Calendar View of Execution History

Installation

We highly recommend that the Automation Orchestrator is installed and setup only by people experienced with both Python and Nintex RPA. You are always welcome to contact us for assistance via: [email protected]

Out-of-the-box, the Automation Orchestrator can trigger and schedule scripts on the same machine and user running the server. In case you wish to do either of the following two things, you need to utilize the Automation Orchestrator Executor add-on:

  • Run the Automation Orchestrator on one machine but execute the scripts on a different machine, or
  • Run the Automation Orchestrator on a machine (for example, a Windows Terminal Server) with multiple users that are supposed to execute scripts

For the Automation Orchestrator to work, you need to install Python. Make sure to install the latest Python 3 64-bit version. If you are in any doubts on how to correctly install Python, follow this guide or contact us.

After installing Python, you are now ready to install the Automation Orchestrator. Follow these steps precisely:

  1. Create a folder called "AutomationOrchestrator" on your machine, for example, directly on the C: drive or in the "Program Files" folder. So, your path should be similar to "C:\AutomationOrchestrator" or "C:\Program Files\AutomationOrchestrator".

  2. Navigate to the list of releases and download the source code (ZIP) of the latest version.

  3. Unzip the folder in your created "AutomationOrchestrator" folder. So, your path could be similar to "C:\AutomationOrchestrator\AutomationOrchestrator-0.3.0" or "C:\Program Files\AutomationOrchestrator\AutomationOrchestrator-0.3.0".

  4. After unzipping the folder, run the "INSTALL.bat" file for an automated installation process. Remember to run the batch file (or commands manually) as an administrator.

  5. The last command of the installation process will prompt you to create an account, a super user with full permissions to the Automation Orchestrator. After creating the super user, the installation process is complete.

Server

After a successful installation, you are now ready to run the Automation Orchestrator, the web server. You can run the Automation Orchestrator either locally or in your protected internal network. Which of the two options to choose depends on whether you intend to use and access the Automation Orchestrator only on the host machine or not. You can always switch between the two options.

Run the "SETUP_RUN_SERVER.bat" file, which will create a scheduled job called AutomationOrchestratorRunServer in the Windows Task Scheduler. The created job will run every minute to make sure that the Automation Orchestrator is always running. Remember to run the batch file (or commands manually) as an administrator.

As long as you see this window running, the Automation Orchestrator is actively running on your machine. You can always minimize it.

IMPORTANT: If you wish to stop the server, you MUST click the shortcut ctrl+c in the server window to see the confirmation that the server is stopped before closing the window. Make sure to NOT close the server while any executions are running. Sometimes you need to hit the keys a couple of times before it is registered by the server. Also, remember to disable the job AutomationOrchestratorRunServer in the Windows Task Scheduler if you wish to make sure that it does not restart after one minute.

Common Issues

This section contains a list of common issues and a description on how to solve them. In case the explained solution does not solve the issue or you experience issues not listen below, please report it here.

During Installation

  • If the process of downloading and installing the Python packages fail with a Proxy Error, you need to you must define the your proxy settings before performing the "pip install" command. This can be done either by adjusting the INSTALL.bat file or performing the installation process (the commands of the INSTALL.bat) manually using the CMD. This means that you need to run the following commands before running the "pip install -r requirements.txt --no-cache-dir" command (make sure to replace the placeholder values):

Running Automation Orchestrator

  • After a successful installation (no errors during the process), if you experience that you are not able to access the Automation Orchestrator in the browser, make sure to restart the machine. In case that does not help, check the following point.

  • The Automation Orchestrator will fail to run if the user does not have permissions to execute Python. Make sure to allow the user to execute the global install of Python (python.exe and pythonw.exe) and hereafter the Python (python.exe and pythonw.exe) installed in the virtual environment of the Automation Orchestrator ("./venv/scripts/python.exe" and "./venv/scripts/pythonw.exe").

  • If you either experience that you are unable to access the Automation Orchestrator in the browser or you get a "OperationalError at /login/ - attempt to write a readonly database", make sure that the user has full read and write permissions to the folder where Automation Orchestrator is installed. Right-click on the main "AutomationOrchestrator" folder and give the specific if not all users full permissions.

  • If you have selected to run the Automation Orchestrator in your protected internal network but are unable to access the application in a browser from another computer in your domain, you need to make sure that your Python instance is allowed to communicate through the firewall of your domain. To fix this, you can go to "Allow an app through Windows Firewall" and click "Allow another app...". First, make sure to add the global install of Python (python.exe and pythonw.exe) and hereafter the Python (python.exe and pythonw.exe) installed in the virtual environment of the Automation Orchestrator ("./venv/scripts/python.exe" and "./venv/scripts/pythonw.exe").

Setup

You are now ready to access the Automation Orchestrator via a browser and get started. As long as the Automation Orchestrator is running, you can access it in your browser. The URL is specified in the window of the server running. Begin by signing in to the Automation Orchestrator using the super user that you created during the installation process. You should now see the home page.

After signing in, you can begin to set up the Automation Orchestrator. This is the order of the setup:

  1. Add a Bot: This is the computer name and username to run the automation. Begin by adding the current computer and user, which will be the default values of the first Bot you add.

  1. Add an App: This is the Apps you wish to use for automation. The path of the App must be the path on the computer and user to run the automation. For example, this could be name "Foxtrot" and path "C:\Program Files (x86)\Foxtrot Suite\Foxtrot\Foxtrot.exe"

  1. Add a Botflow: This is the Botflows you wish to run with your Apps. The path of the Botflow must be the path on the computer and user to run the automation. For example, this could be name "Invoicing Process" and path "C:\Users\mbalslow\Downloads\Invoicing Process.rpa"

  1. Set up Triggers: The Triggers will be what is activating the automation. The simplest Triggers are File Triggers and Schedule Triggers.

  • For testing purposes, and if you ever need to start an automation manually, you can always manually activate the Triggers by selecting them in the list and use the action in the dropdown to activate them.

  1. Follow the Botflow Executions: When Triggers are activated, a record is added to Botflow Executions. The different statusses are:
    • Pending
    • Running
    • Completed
    • Error
    • Cancelled

  1. Get Email Notifications: If you wish to receive Email Notifications, you can set up an SMTP Account.

  • After setting up the SMTP Account, you can test it to make sure that the settings are correct by selecting it in the list and use the action in the dropdown to test it.

  • Now, go to your Botflows and add the recipients for each of the Botflow Execution events.

You have now set up the Automation Orchestrator!

Notes

The Automation Orchestrator runs with the "DEBUG" flag set to "True", which is not recommended in a cloud production environment, since the Automation Orchestrator should only be used to run fully locally or shared in your protected internal network. If you wish to deploy the Automation Orchestrator in the open cloud, there are many additional steps to consider and implement.

Copyrights

Starting from v0.0.17 Automation Orchestrator is distributed under the BSD 3-clause license. Automation Orchestrator v0.0.16 and before was distributed under the MIT license.

Copyright (c) 2019-2020, Basico P/S, Mathias Balsløw

Contact

For contact or support, please write to us at: [email protected]

automationorchestrator's People

Contributors

dependabot[bot] avatar m-r-thomsen avatar mbalslow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

automationorchestrator's Issues

Starting botlows manually

Hi
It could be just me, but I find it a bit confusing with the name of the option 'activate selected triggers'.
image

Since there is a column 'Activated' my first though was that if I click that it will just mark all of the botflows as activated, but instead it is for starting it. Maybe the 'Activate' word could be changed to 'Start' or 'Run'?

Also, it would be nice to be able to run the flow manually directly from the 'Botflow' window and not only from scheduled windows.
image

Note field on Botflow Executions

Would it be possible to do one of below, or even both.

  1. after an execution has failed then give an option to try to run again. And if the run was successful, then the status would change from "failed" to "success with manual help" or something

  2. Having the option to add a note to histories of executions. When a Botflow is failing I would normally go and start the script manually, but the history in Orchestrator has no record of this, and it will look like the script did never run. This way we could state in the history "I ran this script manually on 1/4 20 at 10. a.m., the error occured due to...... "

Thank you in advance and keep up the good work with this tool
Ghita

Python window run as minimized

Hi,
Not sure if this is possible at all, but if so, it would be nice that the task that runs the python script will run as "minimized" automatically. I mean instead of the window popping up once logon or fresh start.
If possible even as "hidden"
Thanks
Ghita

Time-out while correcting script

Would it be possible to get a pop-up with a timer before timeout will cause the script to close down.
In some cases we have scripts being paused for a certain amount of minutes where we have a chance to decide whether or not we will do some corrections to the script. If we decide to do a correction. the scripting time may cause the script to time-out and there is no chance to stop this.
If a pop-up would show saying (Botflow will time-out in 60, 59, 58..... to discard press "discard") and if we press discard then Orchestrator should ignore the time-out this one time, if no-one will press discard then after the 60 seconds Orchestrator should just time-out as always.

Scheduled triggers and DST

After the ending of DST this year (in Denmark), the scheduled triggers in the orchestrator are scheduled 1 hour ahead of time. I'm not sure if DST compatibility is intended, but if it is, it's buggy :)

Dashboard statistic based on botflow NAME instead of PATH

If you change the path of a botflow, it will no longer show in the statisitcs in the Dashboard. Wouldn't it be possible to do the statistics from the "NAME" instad of the "PATH".
I have already had a couple of clients that have renamed botflows, or added extra folders and by that changed the PATH of a botflow.
Thanks
Ghita

Trigger missed

Hi
I just encountered orchestrator skipping one scheduled robot. After looking at the console I noticed, that it did a restart at 10:01:02 and the robot was supposed to run at 10:01:00. However in this case i guess the 10:01:00 happened while the orchestrator was restarting.

I think it would be useful to have a check that there are no robots scheduled in the next 5 mins or so before doing the restart.

Console:
image

Schedule:
image

Executions:
image

Queue if already running in scheduling

When I register a botflow there is an option "Queue if already running". I use the same bot at the same time, on several machines, but if I uncheck this option when registering the botflow, it limits me to one execution of the bot even if I have 10 machines available to run at the same time. Would it be possible to include something similar in the schedule? That way it would only create a queue on free machines and not on machines that already have a queue thinking about multiple machines at the same time, with the same bot.

Or in the botflow registration itself, but another option analyzing the available machines and not limiting it to a single machine.

Botflow time out

When a botflow times out, Orchestrator is not able to run another botflow without me opening and closing FoxBot manually.

It looks like Orchestrator closes FoxBot on a timeout, but doesn't tell the schedule to check if the next bot can be opened.

Bot Time Filter

An extension of #14, it should be possible to specify that a bot is only available during a certain time frame, similar to how the triggers work.

Assignment of apps to bots (or vice versa)

Would be great if it was possible to assign apps to each bot (or enable apps on each bot). Same should probably be done with botflows to bots unless a validation could be made via filename extention.

Purpose is to avoid attempting to run one type of automation (eg. Uipath) on a bot that only runs Nintex RPA.

Single trigger - Multiple bots issue - with reference to issue #14

Hi,

If I have a trigger with two bots, and both bots are available, the trigger works perfectly fine, it will start the botflow on 1 of the available bots.
If I have one of the bots being occupied, the botflow will start on the available bot, but once the occupied bot gets available, the same botflow will also start on this bot now.

Is this a bug, or am I doing something wrong?

Thanks
Ghita

National Holidays

Hi, so I know that it is possible inside your botflow to make lists, and actions that will check if today’s date is a national Holiday and if so, close the Bot, and so on, bu I was thinking if it would maybe be possible already from the Orchestrator. Was thinking something like:
When choosing whether or not the Botflow should run on weekdays and weekend days, maybe there could be a number of checkboxes for National Holidays... run on National Holidays: “DK, SE, DE, US...” all should be checked from start, but you could then un-check the one you need your Botflow NOT to run on. I know that there should be contact with calendars of each country, and I do not know if there is any “smart” way to script that, but if so, this would be very cool.
Thanks
Ghita

Open file dialog - File path

To enhance user experience an open file dialog should be added, so it's possible to pick a file rather than only being able to type/paste the file path.

Example filepath for:

  • Apps
  • Botflows

Notification emails "Queued"

Hi,
Is there any reason that the notification email about a script being queued will come no matter if a script is "actually" queued or not?
If nothing is running on the BOT, I will receive a notificatoin that the triggered Botflow is queued, and seconds later I will receive a notification email that they Botflow is started.
I believe it would be more usefull if the email notification saying that the Botflow is queued will only come when the botflow is acutally queued due to another botflow being in process.
Thanks
Ghita

Include only botflow name not full path in email notifications

Hi,
Would it be possible to change the notification email subjects from:
[##] Botflow started: "FULL_PATH_BOTFLOW.RPA"
to
[## Botflow started: "BOTFLOW_NAME_ONLY"

I think the emails would be much more usefull this way. the full path can of course be mentioned in the body of the email still.

Thanks
Ghita

Notifications sent to SMTP account

Would be great if the sending of notifications to the SMTP account by default could be activated or deactivated.
I would prefer having one email as sender and per botflow we can choose the receipient (which is already possible), but I do not want every single notification sent to the sending mail by default.
Thanks
Ghita

Copy Trigger action

Hi,
It would be nice if it could be possible to choose "Copy trigger" in the dropdow in trigger views. We often have scripts that should run ever Monday and Thursday i.e. or every day at 10, 13, and 17 o'clock.

Thank you in advance
Ghita

Trigger overview per Botflow

I am missing some kind of overview of the total number of triggers per Botflow.
Once you have 10+ scripts it can be hard to keep track of the different triggers per Botflow.
If one Botflow is both triggered on a schedule, IMAP and API, it would be nice to be able to click the Botflow, and then have an overview of all the triggers both active and inactive for this particular botflow only.
I hope this could be an enhancement in the future.
Thanks and keep up the good work.
Ghita

Help to install by passing proxy

Hi,

Mathias was helping me installing the orchestrator on a server that required bypassing the proxy, and he made a note for "next time" saying:

_**To be able to run the pip install commands on this machine, the proxy gateway must be defined in the CMD.

To do this, run this command:
set http_proxy=http://username:[email protected]:8080

Then perform the pip install commands "manually"**_

I want to update the Orchestrator to the lastest version now, and I ran the command, and I "think" I manually performed the pip install, but I am not sure if I did it correctly... propably didn't... :o/
Anyways, after the Orchestrator was installed, I can login to the Orchestrator (I get the login page), but after that I get:

image

@mbalslow maybe you know and can explain to me what I am doing wrong. :( When I do the set http_proxy command, "nothing happens", but it doesn't say error either, so I expect it to be okay...

Thank you in advance
Ghita

Orchestrator version visible in Orchestrator

I have a couple of times lately thought that it would be nice if the Orchestrator version would be mentioned when you are actually in the website.
Instead of having to go to windows files to check which version is running on the particular machine, it could be mentioned in the top ribbon, or in a buttom corner in the website. Just somewhere.
Maybe I am missing it, and it is already there, if so, maybe you can tell me where to see it.
Thanks
Ghita

New function: Repeat scheduled jobs

It should be possible to schedule job to be running from a date 1 until date 2, or possibly a set number of times.

Example:

  • Run job every X (eg.12 hours) from the 20th and until the 28th each month
  • Run job every X (eg. 12 hours) for Y number of times

Cant find mapped network drives

Sometimes when executing a scheduled scripts from a mapped network drive, the Orchestrator says that it can't find the botflow.
But if i use the UNC path for the drive there is no problems.

Fx.

Not working: T:\Robotics Monitor v5.9.3 Scott Evil.rpa
Working: \basicofil01\bco\Robotics Monitor v5.9.3 Scott Evil.rpa

The error only occurs on some machines/drives. I have a suspicion that it could have something with the user rights to do.

Multiple schedules

I have several botflows that run on more than one machine at the same time, due to the volume of processes. When I create a schedule and select several machines, it directs to a single machine at a time for each execution of the schedule. No problem with that. But, what is the possibility of having an option in the schedule to schedule on all available machines at the same time, and not individually?

Dashboard "Botflows scheduled today"

In the top of the dashboard, you have "Botflows running", "Botflow queued" etc. Maybe you could add an extra one called "Botflow scheduled today" which could show the no. of Botflows that are scheduled for today.
Just throwing ideas out there, I hope it is okay.
Thanks

Enhancement - Add hostname to allowed_hosts

Currently, the settings.py file for Django contains the following allowed hosts:

ALLOWED_HOSTS = ['127.0.0.1',
'localhost',
socket.gethostbyname_ex(socket.gethostname())[-1][-1]]

Where the last line only retrieves the IP of the current machine. I'd argue that adding the line socket.gethostname() by itself would be beneficial, as more often than not you access the webpage in a local environment by its name rather than its ip.

Using the other value in the array returned by socket.gethostbyname_ex() returns the hostname with the domain attached, and as such might be less useful than simply socket.gethostname()

Triggering Python Files

Hi

I tried to set up the orchestrator to trigger a python script instead of a Foxtrot file and got into issue with library import:

[17/Jun/2020 09:53:13] "GET /login/?next=/ HTTP/1.1" 200 2161
Traceback (most recent call last):
  File "C:\send_email.py", line 1, in <module>
    import win32com.client as win32
  File "C:\Python\Python37-32\lib\site-packages\win32com\__init__.py", line 5, in <module>
    import win32api, sys, os
ImportError: DLL load failed: The specified procedure could not be found.
[17/Jun/2020 09:53:23] "GET / HTTP/1.1" 302 0

However when I run it on Orhestrator's python ("C:\AutomationOrchestrator\venv\Scripts\python.exe") file everyting runs fine.

Or if I trigger python script using python IDLE, it runs fine using the installed python (C:\Python\Python37-32)

Do you know why this could be the case?

Dashboard

Hi,
It would be cool to have another column under Botflow executions with the "time used" per botflow execution. So after Botflow starting time and Botflow ending time, another column mentioned the time interval between the two.
One more thing that would be awsome would then be a total in the buttom, like today there is a total botflow executions calculation in the buttom. Maybe even an average time spent on the selected botflows.
Just a thought, the tool is great, and I don't mean to be demanding, I only want the tool to be even better. :o)
Cheers
Ghita

Details for Pending botflows

Hi

would it be possible to add more details of why the botflow is pending?
image

This does not happen very often and don't know why, but sometimes the executions get stuck on one bot being pending. If this heppens it would be nice what orchestrator thinks is the reason for that bot to be pending.
in this case the flow was pending for around 40 mins before I cancelled it. Neither Foxtrot not foxbot was running on that account during that time and I opened and closed Foxbot before cancelling it to check if that would help, but it didn't. After cancelling it, I ran it through 'Schedule triggers' and it went to Running state right away.

SMTP accounts

Hi

After updating to 0.3.7 I have noticed that SMTP accounts page doesnt work anymore:
image

Add shortcut loads the 'Add SMTP account' page
Change shortcut results in similar error

Botflow Executions Mass Selection Options

Hi,

It would be great if you could change the status of an execution directly from the "Botflow Executions" page. For example via the drop-down menu. For whatever reason an execution might timeout, get interrupted, etc. and instead of deleting them i'd prefer to change the status so they don't stall the que. If multiple instances fail - for example if a server shuts down, it would be cool if you could mass select executions and update the status collectively.

Botflows always displays status "Pending"

Hi there!

This tool is amazing, thank you all for sharing it.

My issue is about: My Botflows always stay with status "Pending".

Let me explain my bot and setup:

Python script just to create a folder to test the BASICO (manually it works):

Create a new Bot:

Create a new App and test it:

Create a new BotFlow and test it:

Create trigger to test it running:

Dashboard displays status "Pending" 4ever:

Have anyone faced this problem like me?

Is there a way to solve it?

Have something that I'm doing wrong?

Thank you all.
Best regards

"attempt to write a readonly database"

After reinstalling Automation Orchestrator to newest version im having trouble logging in to the django site. I did a reset of the database, so now the database is empty except for the superuser "admin" that i created during installation.

When trying to login i get the error message "attempt to write a readonly database"

Both Install and setup_run_server has been run as administrator

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.