Enterprise Disaster Recovery Software Solution

turned into SaaS and developed further by Redwerk

9yahds, Inc9yahds, IncBoston, MA, United States

9yahds is a provider of process automation software as a service that allows to build, use and track business processes in the cloud.

All Customers
Legacy Codebase

9yahds came to us with a Python product already developed for single instance use and a major business requirement to turn it into a full-scale multi-tenant SaaS. We worked on per project basis with full customer control over budgets.

Learn more
Business Automation

Disaster recovery, time tracking and invoice generation with very business-specific workflows. We can understand your business and automate it for you.

Learn more


Redwerk with its solid background in providing of the Python development services was challenged to modify the existing modules of the system and to add new functionality:

Turn One Instance Application To SaaS

The initial application is a one-instance product where all the users work with a single set of data. We had to turn it into a SaaS by introducing multi-tenancy: the data context is switched depending on the logged in user. We had to modify groups of users called companies. Each company should have access to its own set of data, including processes, issues, episodes, etc., but most importantly, users. The users section had to contain only users of the actual company, who the presently logged in user belongs to. Companies’ management had to be done using the new navigation item called “Companies”, where it should be possible to create and delete companies, and also to manage users in them.

Admin Interface

We also had to create interface for superuser with CRUD functionality for new users and other objects. Only the special system user and the users with certain rights, the so-called Superusers could log into it. Admin interface had to consist of two items: Companies and SuperUsers. Companies had to include CRUD functionality regarding companies and SuperUsers section had to allow managing Superusers of the application.

Organization Modeling

We had to fundamentally reorganize an existing functional component called Organization modeling. Organization is logical grouping of teams and functions supported by resources. Organization modeling allows to manage organizations.

Due to the fact that the new logical entities were added to the application, we had to create a visual representation for them. All this was reflected in the module Organization Modeling. The usual dialogues used for creating items were to be replaced with drag&drop technology. It is much more convenient for creating complex elements of the system with a hierarchical structure (e.g., users who belong to the company, etc.). As a result, the module should contain a hierarchical representation of the elements (tree) with the possibility to drag&drop and the form that would give the possibility to display and edit the properties of the selected item in the tree.


Process is a collection of tasks. “Process Modeler” page allows to manage the processes. The workspace had to change the way information was presented in the product. The addition of the “workspace” had to take place on the “Process Modeler” page. We had to redesign the existing flow of process creating, running and managing. We had to add the list of the existing processes to the Process Modeling page separated by categories:

  • Team Processes: Processes that belong to the team of which the current user is a member.
  • Company Processes: Processes that belong to the teams of the company, of which the logged in user is a member.
  • Public Processes: a list of processes that have been made public, no matter by whom and from which company.

Team processes can be directly edited. Also, this process can be put “live”, and then it will be available to all members of the company. The company and public processes can only be copied to the team processes, and only then be edited.

The processes editing had to be changed: drag & drop had to be added. It significantly improves the usability of the process editing. The process is represented as a tree of tasks and it’s very convenient to drag and drop the task to the right place in the tree. It is also possible to create a task by dragging the icon of the new task to a desired location in the tree. For each selected task there is task view, where you can edit all the task properties. Besides tree and task view the hierarchy of the tasks and their properties can be edited in table view.


Sometimes a group of tasks should be executed at the same time and in no particular order, the most important thing is that they should be executed before other tasks are delegated. The sequence in which they are executed isn’t important, but it’s important that they all need to be completed before the next task. The initial application allowed users to simply give those tasks the same sequence ID.

We were asked to allow users to select multiple tasks, right click on them, and choose “simultaneous” to have the software change the sequence IDs of all those tasks to the same number.

Sequence ID interval in the initial application was +1. We were challenged to change it to +10 in order to add new tasks to sequence without having to resequence following tasks.

Multiple Processes

Once the necessary Entities, Processes, and Tasks have been created, users can begin using 9yahds to test and execute the processes that have been created in the system. In 9yahds Process Execution typically begins with the Reporting of Issues by Users or integrated applications (i.e., HelpDesk, ticketing systems, etc.). Once an Issue is entered in 9yahds, Teams evaluate each Issue to assess severity. If warranted, Teams then create Episodes (i.e. Interruption Events) with associated Issues. Episodes are assigned to Teams for Resolution, with the assigned Team executing the Processes required to successfully address and resolve the Episode.

When a team is invited to join an episode, they can currently only choose one process to start. Redwerk software development outsourcing team had to change the logic in the way that the team leaders were allowed to select multiple processes to initiate.

Document Linking

The system allows companies to store documents in the Knowledgebase. When users created tasks, they had to manually enter the hyperlink to the document. We had to add “link document” button in task creation that should allow users to choose a document or documents to link and should create the hyperlink in the task for them.

Work Console Refresh

Work Console is where all notifications for tasks that still need to be completed are present. We were challenged to implement the behavior for the tasks to appear in work console automatically without having to hit the refresh button.

Sign In

We were also to develop the sign-in page and implement the registration logic. The users should navigate to it through the current login page by pressing Sign Up.

The updated application had to be deployed to the live server.


Redwerk’s development team took on this challenge and modified the existing modules of the system and added new functionality.

Turn One Instance Application To SaaS

One of the ways to implement multi-tenancy was to create separate DB instance for each user. In this case the instances should have been dynamically created and supported. But we have decided to leave one DB instance, which have required significant code changes. Using several instances would have made adding of the new features more complicated because of more complicated DB structure.

Data consistency for the user is provided at data schema level and code level.

We’ve used standard methods and events of extjs to implement Drag&Drop, but for the events we have created own handlers.

We’ve added new entity “Company” to the application, connecting it with the existing entities. New roles (admin, company admin and user) were also added and they have extended the existing roles structure of the application.

Admin Interface

Admin interface was implemented in a very similar way to the general user interface. Menus and tabs are located in the same places. Therefore the user, familiar with the general interface, can easily deal with the admin part. Admin interface had to be created due to the fact that an application has been modified to be SaaS, and there is a need to administer all instances.

Organization Modeling

We have extended organization unit with the lacking entities and relationships and added graphical representation to the tree. Drag&drop was implemented. The existing bugs present at the Organization Modeling were also fixed.


Drag-and-drop also had to be implemented in the Process modeling interface as well to create and reorganize tasks.

We have successfully solved the problem of saving the mixed data from the table view. Autosaving which was indirectly required was added to the project. That also came useful in the Organization Modeling.


Adding a button “Simultaneous” was not the best solution. In addition, its presence might confuse users, because the different levels of tasks cannot be commanded to be executed simultaneously. Therefore, we have proposed another solution: allow selecting some of the tasks and assigning to them the desired sequence id. Thus, now is possible to create two groups of simultaneous tasks even in the same level of the tree. Also one can still edit sequence id in the table view of the process.

Multiple Processes

We have added the ability to select multiple processes using the shift / ctrl. After selecting multiple processes tasks from all of them can be executed.

Document Linking

We have successfully added the documents tab to the interface. It is harmoniously entered into the design of Process modeling. Links to documents can now be seen when executing a task and they arrive in the mail notifications.

Work Console Refresh

We have removed the necessity for manual updates, now assigned items and active tasks always show the latest information.

Sign In

We’ve added the logic of registration and registration page itself. Page is implemented in corporate style of 9yahds.

Looking for a team to take your legacy software to next level?

Request Quote


developers worked on the project


QA engineers


separate projects




The customer’s need for an updated application with the extended functionality was met and the updated application was deployed to the live server. Our engineers have also contributed ideas to the products design and architecture. Some of the bugs which were present in the initial application were fixed during the development.

One-instance product development

Need a team which is great to work with?

Contact Us
9yahds login page
9yahds companies’ management
9yahds superuser feature
9yahds admin interface development
9yahds work console development
9yahds workspace organization
Process modeler development
9yahds work tables
9yahds multitasking software
Removing of nodes
Audit trail feature
9yahds dashboard

Impressed? Hire us

Contact Now

Other Case Studies

United States
Transformed legacy Windows app into workflow automation SaaS with 5 new revenue-generating features
Automated service management routine with a custom ERP having a multi-layered architecture
Helped Dutch provider of ERP solutions extend functionality of their signature software