Sector(s)
Team Members
Project Team
Technical Lead, Migration Analyst, Junior Developer, Site Builder, Themer â Kim Domenick
Senior Developer â Rob Fulcher
Other Development - Dan McCleary, Bryson Henneberger
Summit Health is a non-profit healthcare system serving communities throughout south-central Pennsylvania.
For nearly a decade, Summitâs primary Time Off Management system was a custom-built Java/Spring/Hibernate solution that had to be replicated each time a new department or office was onboarded. This approach eventually resulted in an extraordinary number of separate instances of the same application. Changing a single line of code required hours to deploy changes to the dozens of instances. The application itself was over-engineered with options that werenât needed or used, while the administrative UI was rudimentary. An attempt at automating the time off approval process had resulted in machine-made decisions that managers disliked but couldnât change. Finally, versions of everything, from the JDK to the MVC, had fallen behind.
Summit engaged iWat, LLC to partner with their own developers to rewrite the Time Off Management system using Drupal 8.
NOTE: This site is behind a firewall and cannot be accessed publicly.
About the project
High-Level Goals
- Combine the separate application instances and databases into one, while still providing âwallsâ between departments.
- Allow for department-specific configuration, so that each department or office could configure their own benefit types, limitations, and categories for their employees.
- Upgrade and replace the technology: eliminate Java and Apache Tomcat in the web stack, implement a current PHP version, implement the latest Drupal version.
- Migrate the existing data from many individual SQL Server databases into one MySQL database
Requirements
- Launch on internally-hosted Red Hat 7 servers with current versions of PHP, MySQL, and Drupal
- Fix or eliminate the automation of time off approvals
- Improve and standardize the date range selector
- Give managers full control over time off requests, allowing them to edit any request at any time.
- Improve/complete the Administrative UI
- Make department-specific configuration more visible to managers, with clear documentation on what options mean; eliminate unnecessary or unused configuration
- Eliminate the ability to create multiple user accounts for the same employee. One employee = one account.
- Create a department transfer process, so that when an employee moves to a different department, their time off follows them.
- Provide employees a way to delete their own time off requests, if a request has not yet been approved/denied.
- Display approved time-off to both managers and employees in a flexible calendar format that provides multiple displays and can be printed, if necessary.
- Modernize the look and feel.
- Accommodate complex Union Contract requirements for bargaining employees, without impacting non-bargaining staff.
- Bootstrap-based theme
- Integration to HR system for regular feed of seniority data
- Easily-visible Logging data
- AD integration
Migration Approach
Migration had to be handled in a 3-step approach, taking data from individual SQL Server databases into one single Drupal instance and MySQL database:
- Migrate the department-specific configuration
- Migrate the departmentâs user accounts
- Migrate the time off data for those users
As much as possible, the Feeds and Feeds Tamper modules were used to automate this process, but some manual manipulation of the data was necessary due to the drastically-altered data structure between the new and legacy system. When necessary, MS Excel functions massaged legacy data into the correct format, and reusable Feeds then imported delimited data files to the new application.
During the migration process, Department âwallsâ had to be established, so that users and managers only had access to their own data. This was accomplished by assigning each department a unique ID, and using Views (Contextual Filters) to filter the data, depending on the logged-in user. Business Rules (Dependent Fields) created the necessary parent-child relationships between departments and department-specific configuration.
Theme
Since all functions of the application are performed by logged in users, an administrative theme, Color Admin, was chosen. Color Admin is a Bootstrap Dashboard/Administrative theme often used with Angular and Laravel applications. It was not Drupal-ready, so the standard templates had to be created, and a notable amount of CSS was required for layout corrections. However, Color Admin offered extensive third-party plugins and UI elements. It was well-documented, provided a pleasing color scheme, and was easy to use.
Development
The Time Off Management system was built using as many contributed modules as possible, but the central functionality comes from custom modules and entities. The solution is pure Drupal and does not leverage other technologies for front or back end or interfaces.
Result
The project spanned over 14 months, from research and planning, through development, testing, migration, and training.
As of April 2019, all departments are using the new Time Off Management system. The transition was very smooth, with little to no issues following each migration.
The application is much more portable and easier to administer.
For the regular user (employee) it features:
- Home page summary of recent activity and the status of each time off request
- Personal calendar and a department calendar showing approved time off
- Form to request time off, and a confirmation screen
- Form to communicate schedule deviations to the manager, such as âcame in lateâ
Add Time Off Request
Add Schedule Deviation
For the manager:
- Menu of common tasks and links to department-specific configuration
- Configuration screens to
- Manage items like User Types and Leave Types
- Create âBlack Outâ ranges to prevent requests during certain time frames
- Establish Limits like the number of people who can be off in a given day, or the number of hours per day or week that leave/benefit time can be used.
- User management area to add, edit and maintain accounts for staff
- Department calendar showing approved time off, with filtering options
- Time Off List to view, approve, deny, delete, and search requests
- Time Authorization List to review and disposition schedule deviations
- Alternative Grid Navigation for managers who oversee many different departments
- Customized, searchable logging for various actions within the system
Manager Home Screen
Manager Approval Screen
Manager Review Schedule DeviationWhy Drupal was chosen
- Summitâs public-facing websites are built with Drupal 7 and have managed a high traffic volume consistently for many years.
- Summit and iWatâs combined Drupal experience made it strong a contender that outshone any other considerations.
- Drupal is a reliable and flexible solution that is easily extended with contributed and custom modules.
- The Drupal Security teamâs commitment to regular patching and security updates keep Drupal sites and site hosts safe from threats.
Technical Specifications
Drupal version:
Key modules/theme/distribution used:
- Block Exclude Pages
- PHP
- LDAP AD
- External Auth
- No Request New Password
- Genpass Password policy
- RoleAssign
- Single User Role
- Unique Field AJAX
- Json API (Entities API)
- Entity Reference Views Select
- Feeds
- Feeds Tamper
- Ultimate Cron
- Business Rules
- Time Field for Drupal 8+
- Conditional Fields
- Views Bulk Operations (D8)
- multiselect (d8)
- FullCalendar
Block_exclude_pages, PHP: Finite control over block placement
LDAP, Externalauth, noreqnewpass, genpass, roleassign, single_user_role, unique_field_ajax, realname: Integration to Active Directory, and user account customizations, management, and restrictions.
Jsonapi, jsonapi_extras, entity_reference_views_select: Extend the Views module to output JSON for triggering Javascript, and to have more control over fields that are based on entity-reference views.
Feeds, feeds_tamper, tamper: Data migration
Ultimate_cron: Easy management of scheduled tasks
Business_rules: Dependent Fields (parent-child relationships) to establish department-specific configuration
Time_field: Time range support
Conditional_fields: When possible, used in place of Javascript to identify field values and react accordingly
Views_bulk_operations: Used out-of-the-box for multi-row processing. Also extended through a custom module to bulk update fields on custom entities.
Multiselect: a visually-appealing display of multiple choices
Full calendar: customized to display our desired data in a calendar format