Background
Thank you thank you thank you New Mexico Livestock Board (NMLB) for helping fund XForms in its early days. We owe you a big debt of gratitude for trusting and giving us this opportunity.
Some background: The NMLB currently uses a tech stack that includes a client-server synchronization engine named Adesso, which is the key component handling field data collection. Their typical use case is as follows:
- NMLB inspector travels to a ranch to conduct a livestock inspection, fills out a form on a ruggedized laptop, collects monies, and prints a certificate while on site.
While the above statement seems straightforward enough, there are underlying challenges:
- Many locations are off the grid, meaning no cellular service or access to the internet
- Brand data and images for over 30K different livestock brands need to be readily available in offline mode
- If any brand data is incorrect, or if the inspector needs to add a new brand image, that data needs to be pushed back and updated server-side
- The system needs to be able to generate a report form and print it while in the field, on a portable printer, while in offline mode
- Data collected needs to make its way back to NMLB’s SQL Server on a timely basis, where the data is then parsed out and disseminated elsewhere for other internal functions
Fortunately, the Adesso synchronization software currently in use was designed, built, and managed by the same team (us) that is behind XForms 🙂 That gives us a lot of insight into the exact use cases, pain points, and needs of the NMLB.
Offline
Tackling offline access for NMLB is a little different than your typical offline user. For starters, ALL of their active brand data and images have to be available in offline mode to the inspectors. When you are talking about 30,000 records of anything, that’s a lot to store on a small device, but when you are talking about 30,000 brand images, that’s a whole different ballgame, especially considering that it needs to be in both directions: if an inspector adds or edits an existing brand, that new brand or updated brand needs to make its way back to NMLB’s server, not just to the interim database engine.
XForms is handling this in its NoSQL datastore by treating each brand as a document, and using a new lookup field to dynamically search through the documents for a match in the type ahead lookup field. The current implementation of the brands documents in XForms is online only. These documents will need to be handled via the XForms sync engine in a near future release.
Printing
NMLB inspectors need to be able to print certificates while on site. Remember that we are talking about ranches in rural New Mexico. Not exactly a comfortable office setting in a downtown high-rise with fiber optic wireless access to the internet. More like zero access, or maybe 1 bar of 4G service.
This means that the entire printing process needs to run in offline mode. The current system in Adesso uses a Crystal Report plugin to handle this. In the current version of XForms, printing is a server-side process: data is synced to the server, a PDF process is initiated, and the PDF is generated and stored on the server, ready to be pushed via email, printed from the dashbaord, and inserted elsewhere via an integration. However, the current print to PDF function in XForms won’t work for NMLB, as the inspectors need to be able to print the certificate right there on site, even if there’s no reliable internet connection. Thus, a future release of XForms will embed an entire print to PDF and view a PDF within the app itself.
Synchronization to NMLB servers
The final link is to push field data not just to XForms, but to legacy NMLB systems hosted in their own infrastructure. This requires a separate integration piece that can handle bi-directional data between XForms and NMLB server processes.
Not there yet, but getting close…
We are excited about getting XForms in the hands of NMLB’s team to kick the tires in parallel with the live Adesso system. A few more steps and we will be there.
Want to see what we can do for you?
Click/tap the button below.