Redwerk 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.
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.
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.
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.
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.
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.