Project Summary and Client Background
The Bit-Wizards solution delivery team assessed South Walton Fire District’s (SWFD) legacy backend portal written in PHP which is used to manage their day-to-day internal operations. Bit-Wizards redeveloped the portal in the latest version of ASP.NET Core.
The Challenge
SWFD’s daily operations management tool, Digital Emergency Services (DES), needed a redesign and code rewrite. Over time, this tool required maintenance that was difficult to perform due to its age. SWFD also faced challenges around efficiency, flexibility, and security for DES. They continued to incur technical debt because they lacked a vendor that could maintain the tool adequately. Thus they also continued to experience bugs, and a lack of needed new features that were vital to improving their productivity. Advancements in technology offered SWFD a new option for a change to DES. The Bit-Wizards team employs experts across technology platforms and were able to steer SWFD in the right direction for this vital project.
The Solution
Business Solution
The Bit-Wizards team worked closely with SWFD to choose the right platform for the new solution. Because the DES application is an entirely custom-built PHP portal and most of the application is data-driven, there was little need for user interface modification or content personalization other than when new modules would require development. Thus, there was also not a need for the overhead of a Content Management System (CMS). Bit-Wizards chose the ASP.NET Core platform which provides an up-to-date, extensible, and secure platform to manage users, authentication, and data. Entity Framework Core allowed them to quickly create database structure and import legacy data efficiently and reliably. Using a model-first approach Bit-Wizards was able to focus more on the feature and application development rather than focus on database design which saves time and thus development cost.
This project was a complete rewrite of the existing DES portal with a design and functionality update.
Along with the development of the new DES Portal, Bit-Wizards built an integration to the newly launched SWFD Public Website. This integration allows users to enter beach flag warning data into DES while the system automatically pushes that information to both the website and their social channels on Facebook and Twitter. The other integration comes into play with SWFD’s CAD system which manages their incident logs. Bit-Wizards’ integration pulls the CAD data from emergency incidents accurately into DES for both master log storage and viewing and sorting for various operations and management purposes.
The entire new DES tool is built in a “stateless” manner. To begin, and in contrast to, a stateful application which saves data about each client session and uses that data the next time the client makes a request when an application is stateless, the server does not store any data about the client session. Instead, the session data is stored on the client and passed to the server as needed.
This stateless build also allows for ease of scaling the in Microsoft Azure; which offers a two-fold benefit: One is the ability to scale the site up due to site load increases. Two: the continuous support provided without interruption of service for users during that scaling process. This functionality using the Microsoft Azure and the ASP.NET Core platform is vital to the success of the daily operations for emergency services like SWFD.
Technical Solution
Starting with ASP.NET Core on the ASP.NET Zero platform, the Bit-Wizards team took little time starting the project. They chose the Meteronic admin portal theme which is meant to be used as an admin portal for employee login and managing a variety of different backend/internal operations. This choice of portal theme saved time on design and development and provided a familiar user interface for the SWFD employees which also helped to minimize change management for the project launch. The Meteronic theme also enabled the use of responsive development which allows for user access on all types of devices both mobile and desktop.
Using Entity Framework Core, Bit-Wizards built migrations for legacy data from MySQL to SQL Server. Once the data was in place, they then began to rebuild the application module-by-module using an agile development method, while working closely with SWFD to gather feedback and user data to improve both the module development and the customer’s process while using the application.
For the integration with the new SWFD public website, the Bit-Wizards team created a library that taps into Kentico’s Integration Bus and pushes information to the website via an external application. After DES pulls in the current flag condition information from the website; the user can then modify and save it. This user action creates a task in Kentico, via the integration bus. Kentico then processes and updates the website. After acquiring developer access to both Twitter and Facebook APIs, Bit-Wizards built code that simultaneously uploads the flag condition text, along with a picture of the beach (if chosen by the user) to both feeds.
The DES/CAD software integrates the new DES tool with Southern Software CAD. For the integration, the CAD system generates a log file on the CAD server's file system periodically with all the incidents entered through dispatch up to that point. Then using a PowerShell script created by Bit-Wizards, the log files upload from the local server to Azure where the DES application parses them and saves them in the master logs database table.
During development, both the Bit-Wizards team and SWFD worked closely to build-out and user-test all the portal modules needed for daily operations. Below is a detailed list of those modules and their functionality.
Custom Modules Built for the DES Portal
- Staffing - For shift supervisors, this module allows the creation of an employee roster for each day, shift, and location. It auto-generates based on staff default assigned shift and location. It takes into consideration approved absence requests during auto-generation and allows for dynamic addition or re-assignment of staff between locations. The rosters are then viewable by all staff.
- Directory - Quick access list of staff names, phone numbers, assigned location, assigned shift, and hire date.
- Absence Requests - Allows users to request time off for various reasons as well as EOT requests. Displays a mobile-friendly calendar showing all currently approved absence requests to assist the user in determining acceptable dates. All absence requests go through an approval process where configuration determines which superiors are notified and which can approve the request.
- Tuition Request - Allows users to request prepayment or reimbursement for classes or certifications. Tuition requests follow similar approval configuration as Absence Requests but allow for a two-step approval by the superior and HR.
- Support Tickets - Allows users to submit tickets in multiple categories for issues such as computers, vehicle, office equipment, etc. Specified support staff are notified of the tickets and can respond with updates as well as close out the tickets once they are resolved. A ticket history and conversations are maintained for future reference.
- Beach Flags - Allows simultaneous posting of current beach conditions to the public website (Public Kentico Website Integration), Facebook, and Twitter.
- My Timesheets - Allows users to view their current time sheet and if they have the proper permission, add new timesheet entries.
- Filtered Report - Contains advanced filtering to generate a report of time-sheets. Can be sorted by shift, payroll week, employee, pay type, or date range.
- Add/Edit Timecards - Allows supervisors to enter or edit time-cards for multiple employees on a given date.
- Paystubs - Allows for the uploading of master employee PDF paystubs produced by Sage, those are then automatically parsed and split into each employees pay-stubs. These paystubs are linked to their accounts.
- My Paystubs - Users can view their paystubs for a selected payroll period.
- Employees - Manages all employee-related information such as pay type, rank, shift, location, start date, end date, and contact information.
- Beach Incidents - Allows the creation of reports for incidents that occur on the beach. It includes information about the type of incident, the parties involved, and the current conditions at the location.
- Daily Surf Activity Reports - Allows lifeguards to report and track both AM and PM surf conditions daily along with other statistical information such as the number of medical incidents.
- Call List/Mandatory Call List - Maintains a rotating list of employees ordered by the last time they were called for overtime. Also used by shift supervisors when additional personnel are needed to cover a shift; this functionality ensures everyone has an equal chance to get overtime.
- Master Log Book - Periodically imports a list of CAD incidents from the Southern Software CAD system to maintain a log of everything that has occurred during a specific shift. Also allows the shift supervisor to enter additional logs for other shift-related details.
- Firewires - Contains and allows the addition of department Firewires in PDF format. Notifications are sent out via the built -in the portal notification system displayed on the top toolbar. (This occurs real-time in the browser via SignalR) E-mail notifications are also sent out.
- General - Contains and allows the addition of non-specific documents in PDF format.
- Forms - Contains and allows the addition of forms to be filled out by staff in PDF format.
- Policies- Contains and allows the addition of department policies in PDF format.
- SOGs (Standard Operating Guidelines) - Contains and allows the addition of SOGs in PDF format. Upon creation, an effective date can be selected and pre-populated for seven days in the future. SOGs have a built-in revision system so that as new revisions of SOGs are released the existing entries are updated, and a list of all previous versions can be viewed.
- Lookups - Various configurable tables used for lookups on forms throughout the application such as shifts, locations, ranks, and other defined choices.
- Organization Units - A configurable organization tree used to assign roles, permission, and notifications based on an employee’s position in the organization.
- Roles - Where roles are defined and assigned specific application permissions.
- Users - List of users who have or had access to the application. The module also contains user management such as impersonation and password resets.
- Audit Logs - Central location for logs of every action that occurs in the application for auditing purposes.
- Impact Fees - Allows the creation and tracking of permits. Builders must acquire these permits and pay a fee to build on a piece of land.
All of the site’s functionality is exposed via APIs for future development purposes including mobile apps that SWFD may want to build and integrate later. The security for user authentication and login for the new portal uses the built-in functionality of the Microsoft ASP.NET Core Identity membership system.
The Result
SWFD's Administration process is now decentralized due to the implementation of the new DES tool; it allows the entire staff to be more efficient. By sharing tasks across the team, they no longer have to rely on a single person to own various administrative functions, which causes bottlenecks and slows the entire team's productivity. Since the launch of the DES project, SWFD has seen an increase in both productivity and efficiency across their administrative department. The old manual process of entering emergency log incidents was fully automated with the new CAD integration and has increased productivity by 100% as well as decreased data entry errors. Another impact to productivity comes with the paystub formatting process which is now using the new paystub module and the work that used to take two people, now only requires one. The fully paper-reliant tuition request process has been removed and replaced by a fully automated process using DES. Lastly, the beach flag integration with the public facing website allows a single user to enter beach flag data into DES and simultaneously push the updates to all social platforms with one action.