Volkswagen ERL: Customizing JIRA to Solve a Complex Problem
At Expium, we have been asked to complete some interesting projects. In early 2016 we were engaged by Volkswagen ERL to train their team on the use of Atlassian tools and consult on their implementation. Like many of our customers, they had tried to run on their own and had hit the limit of their understanding. They could see the possibilities in the tools but did not know how to get there. After the initial engagement, we provided weekly support, training, and consulting to their teams. During this process they brought us the very painful problem of tracking prototype vehicles from build to destruction and the need to track every aspect of the vehicle’s lifecycle. For example, they needed to know when it was scheduled for a test drive and what bay it was being serviced in. There is quite a complex set of requirements that cut across many different aspects of data.
Our first approach was to build a project in JIRA to track vehicles and scheduling. We then expanded to track maintenance, software/hardware upgrades and other functions. This project was beta tested in the organization, but JIRA did not offer the visually compelling interface they were wanting. Part of this was a desire to have a display screen in the engineering area that would show schedule or bay availability in the garage. They wanted something that would radiate a lot of information quickly to staff as they walked by. There were also problems with getting the executive team to learn to use JIRA. The execs wanted something that looked and felt like their internal applications.
After much discussion, we offered to build a custom application that would serve as a custom interface for JIRA. Expium’s sister company, Oasis Digital is a leader in the building of javascript single page web applications (SPAs), with either React or Angular. We knew at the time that Atlassian was leaning towards React for their framework of choice. In addition, the interface requirements were not arduous, so React seemed like a good choice.
Volkswagen had hired a development intern to build an application for this purpose, but he intern was struggling with building a full stack application. So in addition to writing the software, we needed to train their intern at the same time.
The final adopted structure was a React web app using a Java Spring server as a proxy between the web app and JIRA’s REST API.
The app has three major needs that it addresses. First, it presents a driving calendar for each car, detailing who is scheduled to drive the car, and when. Users can go through the entire process of scheduling a car for their use through this calendar. Second, it presents a schedule for maintenance of each car. Users can reference this calendar to see when the car was last worked on, as well as to schedule future work. Finally, the app presents an overview of the garage floor. The user can see what spots in the garage are occupied at the moment, and then interact with the graphic to view which car is in that spot and what work is being done on it. This view also shows a schedule of work for each spot in the garage, allowing for better allocation of space over time.
JIRA is the sole source of truth for this application. This impacted how we wrote the app in a few ways.
The app does not have a separate description of Volkswagen’s workflows and business rules hard coded into it. The app uses JIRA’s REST API, via the Java Spring server, to interrogate JIRA about what those processes and rules are. As changes are made to the underlying JIRA workflows and business rules, those changes are automatically reflected in the web app without any need to change code. This allows Volkswagen to continue to refine their processes and rules in JIRA without needing to worry about keeping the app in sync. For example, if they determined that another step in an approval process is needed, the JIRA administrators at Volkswagen would only need to update the appropriate workflow, and then users would be able to perform that step of the process using the app.
The Java Spring server uses OAuth integration for authentication. This means that any user that is authorized to log in to the underlying JIRA is allowed to log in to the app using the same credentials. Their permissions in JIRA are also reflected in the app. If a user is not permitted to approve a reservation on a car in JIRA, they will not be able to do so using the app. Give them permission to approve in JIRA, and they will be able to do so using the app.
The application was built over the course of a few weeks of effort and put into production. Volkswagen has been very pleased with the application: it is reliable, user friendly, flexible, and was not an enormous investment. The use of JIRA as a backend for the application has the additional benefit of being auditable. This is an important aspect of prototype vehicle development.