Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit
Tags: casestudy
Published: 2021-07-20 09:23:43

---
title: Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit
published: true
date: 2021-07-06 14:19:38 UTC
tags: CaseStudy
canonical_url: https://hasura.io/blog/case-study-how-nexlab-used-hasura-to-digitize-daikin-vietnams-ac-servicing-business-unit/
---

 ![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://hasura.io/blog/content/images/2021/07/hasura_daikin_case_study.png)

**Daikin Vietnam worked with Nexlab on a project to modernize their legacy technology stack. Nexlab chose Hasura for this initiative, and the end result was a project delivered ahead of schedule and at a 50% lower cost than planned.**

[Nexlab](https://www.nexlab.tech/) is a software development agency based in Vietnam that specializes in building custom software solutions as well as providing software outsourcing services for enterprise customers. Their customers are based in Singapore, Hong Kong, Vietnam, and the USA. Nexlab was founded in 2016 and now has 40 employees based in Vietnam.

Nexlab moved to use Hasura primarily to be able to deliver projects within a tight timeline and deliver complex enterprise applications confidently. In 1 year, Nexlab has made Hasura an essential part of their stack and has observed a 50% reduction in their development cost and the ability to confidently deliver within timelines.

**“Hasura saves us a lot of time, by reducing our cost, our team size as well as the talent that we need to hire. Overall, Hasura has reduced our development cost by 50% and has made the team confident that we can provide better time estimates to clients as well as deliver on time”.**

Other advantages highlighted in this case study include:

1. Reduce the dependency on the backend developer for API design and development.
2. Empower frontend developers to be full-stack developers with better domain understanding and visibility into the application architecture.
3. Using best of breed tooling to build cloud-native scalable applications
4. Incremental migration to ensure that new systems can stay in sync with legacy applications within the enterprise

![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://lh3.googleusercontent.com/R2TGQiQ9qklgJaWMRWKtFWV87flI0Hw1PzBJ6PvR55eZ2xygeO4yL3v0sckd9V675OQLDTWHBGU7ERN6kkjjzvVDy41SA2JSzmjCqGP_pVtN64jk4RDn2svS-Zwx15vz9EytivSQ)

## Challenges faced by NexLab:

Nexlab is a technology partner to Daikin Vietnam, one of the largest Air Conditioning companies globally, and was approached by them to help digitize their entire system.

In this case study, we will be focussing on the service management system built by Nexlab for Daikin Vietnam. This system helps users easily register an air conditioning service request on an app and be assigned a technician by Daikin to fulfill the request. This service was originally being managed manually: downloading a lot of data from their legacy systems - ERP software, CRM systems as well as access control software, into several excel sheets and assigning technicians manually.

This legacy system was not fast enough for the real-time requirements of the business unit and needed a lot of human intervention for completing each request. Furthermore, there was also no way to monitor and measure the business impact of this service and the teams.

Nexlab was approached in September of 2019 to digitize the entire servicing business unit of Daikin Vietnam. Nexlab was to build all the applications required to take this business unit online, as well as integrate with their legacy systems so that reporting could continue to be centralized.

Given the business importance of launching this before the busy summer months of April to June, **there was significant pressure to deliver the product on time.**

This project required 3 applications to be built:

1. Mobile applications for the user to book a service and see the allocation and fulfillment by the technician
2. Mobile applications for the technicians to receive and confirm the request
3. Web dashboard for the operations team to manage and monitor these requests - for example, to understand if service requests are being fulfilled on time. 

These systems also had to interact with their existing systems: their CRM, ERP, and their existing call center software.

![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://lh6.googleusercontent.com/Syfj4Y_gnltGHsw5YkQ-nnRvn5OTW1w7-RfPRqqUyME23qKqKtbiQt5m-7Y8dkHtBw2JCUd1pRZ-oFFSrIDCtArT_uIVkoH1awY6cbILzitM6_BKdBeZJigbsX2BrcmkrXI-YbGb)

![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://lh5.googleusercontent.com/ok1uQ5smF6ot_FoVVr6IqHKWHPNZ_Qbeu_8kRDxcUhIofvroOAtifIKWesexJQOIUM8HOODLDAmdjmzUqir2ywZkw4qeCsytu2Ha0W43_5ffxDXk1P6K4rlW5EH-WN5GKpAPzvvB)

##   
Choosing Hasura

Nexlab was traditionally a NodeJS and Postgres shop working mostly with REST APIs. The time constraints of the Daikin project got them exploring other solutions that could help reduce their development time. Hasura was recommended by a consultant they worked with as a solution that could not only reduce their development time but was also very performant, and plug and play to set up.

The team building these 3 applications consisted of 1 backend developer, 1 web developer for the admin dashboard, and 4 mobile developers, across Android and iOS, for the 2 mobile applications. With their older NodeJS stack, there was a lot of pressure on the backend team to build the multiple APIs required by the front-end team for the admin portal. With Hasura, the frontend teams are able to do this by themselves by using GraphQL to query the backend directly. The single backend developer on the project was responsible for the database design which automatically set up the GraphQL endpoint (Hasura automatically creates the GraphQL server, without the backend developer needing to build it), as well as building a simple NodeJS service that converted Hasura’s GraphQL APIs to REST for consumption by the mobile app teams.

![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://lh5.googleusercontent.com/ysrFD_5qT_D1vvfE4AfuQTUUTRdhUU9miWC2LRkZsDpXeFxC-EP1pkci0iItLLZmYmJA-3IKcruYhoRDYzclWJsYv2AHHhqenZk8Y1_YxRBzxx0jSgAVuNFJwK0Wt2XFkCLzqHV_)

**“Using Hasura has helped the front-end developers on our team become full-stack developers by understanding more about database design and using GraphQL to query the database directly. This has been very easy to learn, and the frontend developers no longer have to wait on the backend team to design and build APIs for them to consume”**

Using Hasura accelerated the development time significantly while reducing the number of people required to build these applications. The frontend team now also gets involved in the domain design to understand how to write more efficient queries making the overall team highly efficient.

## Hasura Architecture & Use

![Case Study: How Nexlab used Hasura to digitize Daikin Vietnam’s AC servicing business unit](https://hasura.io/blog/content/images/2021/07/daikin_schema_diagram.png)<figcaption>Diakin Hasura Architecture Diagram</figcaption>

What Hasura features do you most benefit from:

<!--kg-card-begin: markdown-->
- [Hasura Console](https://hasura.io/docs/latest/graphql/cloud/index.html): The [Hasura Console](https://cloud.hasura.io/signup) is a convenient way for the team to manage all the systems connected to Hasura. It is used to view and edit data, as well as manage migrations.
- Eventing System (Triggers, Schedule Cron): The event system is used extensively across a variety of use cases:
  - To listen to data changes and execute background processes for notifications and emails
  - Cron triggers are used to calculate aggregate data, schedule marketing messages as well as export files
  - To keep a NodeJS server that is used to serve REST APIs for the mobile frontend in sync with the database.
  - To keep the data in sync with their legacy ERP such that weekly and monthly business reports can be generated.
- This apart, other features of Hasura are also used extensively:
  - GraphQL [queries](https://hasura.io/docs/latest/graphql/core/databases/postgres/queries/index.html), [mutations](https://hasura.io/docs/latest/graphql/core/databases/postgres/mutations/index.html#mutations), and [subscriptions](https://hasura.io/docs/latest/graphql/core/databases/postgres/subscriptions/index.html#subscriptions) APIs over Postgres: the Daikin management system has many complicated features for CRM, HRM, warehouse, etc that require a large number of CRUD APIs. Hasura helps us save development time.
  - [Role-based Authorization](https://hasura.io/docs/latest/graphql/core/auth/authorization/index.html#:~:text=Hasura%20supports%20role%2Dbased%20authorization,authentication%20service%20with%20every%20request.): the authorization engine is flexible enough for RBAC role permissions for many user types: customer, staff, admin, manager, etc.
  - [Remote Schemas](https://hasura.io/docs/latest/graphql/core/remote-schemas/index.html) and [Actions](https://hasura.io/docs/latest/graphql/core/actions/index.html) are both used for custom logic requirements built with graphql-server-express (now renamed to apollo-server-express) and Node.js.
  - [CLI / Schema Migrations](https://hasura.io/docs/latest/graphql/core/hasura-cli/hasura_migrate_create.html): The Hasura console is frequently used. The cli-migration image is also useful for migration automation
<!--kg-card-end: markdown-->
## Summary  

What started as a way to win a client with a tight timeline has now become a business differentiator for Nexlab.

As Nexlab still uses their NodeJS and Postgres stack on older projects, a cost assessment done internally has shown that projects using Hasura are at least 50% more cost-effective to build. Nexlab has now turned this into a business advantage to maintain their promise of on-time delivery and win more projects.