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

Visit the site

Visit the site

Organizations Involved

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:

  1. Migrate the department-specific configuration
  2. Migrate the department’s user accounts
  3. 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’
User Home Screen User Home Screen Add Time Off Request Add Time Off Request Add Schedule Deviation 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 Home Screen Manager Approval Screen Manager Approval Screen Manager Review Schedule Deviation Manager Review Schedule Deviation

Why 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. 
primary screen home

Technical Specifications

Drupal version:

Why these modules/theme/distribution were chosen

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

Manager Config Option Screen
Approved Time Calendar
Time Off Confirmation/View