Offline Manufacturing Execution System (POS - like)

Hi Team,

Thanks for your hospitality at the Confrence, I really had a good time and I enjoyed it very much.

Its nice to know that erpnext is going on the direction that is good for everyone.

My Idea is as follows:

I have request from clients that are still using unreliable internet connection. They have difficulties with stable internet connection and but still want to implement erpnext for their shops.

The problems arrise as when they do not have capabilities to be online 24 hours and they want to have off-line servers that handle transaction in their stores.

what they need is :
Off line data export from the stores and data import to the main office to consolidate their book.

As far as i know data to export are:
Record Sales at the store
Record Expenses at the Store
Record Delivery Note at the Stores
Record Stock Receipt and Stock Transfers at their stores

For that they asked me if we can provide a capability of transfer data through USB so they can just download in usb and upload it on their main Office for the record purpose.

I think ERPNEXT has already a good import and export data features, however it still would download all the transaction and tables from all the transaction inside the table.

How about if we add filter for the table export, lets say “date”, so we can select which date of data to export,
that way we can just export the data we want to csv in usb and import it in their main office without having the risk
to overwrite the existing data from previous date.

do you think its workable??



@tara_antonius sorry for the late reply!

So from what I understand, you will have 2 full instances running. This is not as easy as it sounds, as we will run into data integrity issues.

We already have the offline POS to record sales. I think we can build a specialized UI like the POS for shop floor.

Maybe lets call it MES (?)

So in the MES, when we have connection:

  1. Download open Production Orders
  2. Download open Sales Orders
  3. Sync the warehouse stock levels

In the MES, you can

  1. Make Stock Entries against Production
  2. Make Timesheets against Production
  3. Make Delivery Notes

Can someone propose a UI for this?

I am sure @JayRam amd @dominik have a few suggestions.

Whoa! Antoine! I’m working on the same solution. Getting it done by an external services provider as ERPNext said they did not have the bandwidth for this.

Can you contribute your ideas and share, if required, the development costs?



Hi JayRam

Yes would be glad to, i can share you some of the ideas i have about
manufacturing and if you need can also share the costs



Here’s that the requirement I have given out to a partner. Please add additional requirements that you need or that I have missed out.



In the factory’s case, I suggest we do a local install of ERPNext and then do the synchronization with the WebHosted Version.

My client needs this right away and I’m sure all manufacturing facilities in countries with similar (or worse) infrastructure to ours will need this feature.

Here’s the requirement. Please price this to be part of ERPNext

Primary Install of ERPNext - ERPNext Hosted or AWS or whatever - Primary Server
Secondary Server at the factory - Company etc. is the same as the primary server;
The users, Warehouses and stocks at the Factory Location also get reflected on the Primary server
A user at the Primary server will try to complete a transaction. If the transaction is related to the Factory .AND. the connection is up, the transaction can be completed by the user. If the transaction is related to the Factory .AND, the connection is down, user gets an error saying link is down and s/he cannot complete the transaction
A user at the factory will try to complete a transaction. If the transaction is not related to the factory .AND. the connection is up, the transaction can be completed by the user. If the transaction is related to the Factory .AND, the connection is down, user can still complete the transaction

Needless to say, a Primary Server can have multiple secondary servers and if the access rights are permitted, one user related to a secondary server should be able to carry out a transaction at another secondary server or at any of the servers.

The Configuration will have a Primary Server. The Primary Server is the primary system of record for all Centrally Controlled Data.

Centrally controlled data consists of:

Company Master
User List
Roles and Permissions
Employee Master

Common Data, not centrally controlled:

Item Master
Customer Master
Supplier Master

Each Warehouse will be associated with a server - Primary or one of the secondary servers. Similarly other resources may have to get assigned to a particular server. I can think of only the Warehouse as a resource for now, but there may be others.

Centrally Controlled Data can be changed by authorized users only when a connection to the Primary Server Exists. All Data is however replicated across all servers. So a person connected to a Secondary Server that has the permissions to add users will be able to add users only if a
connection to the primary server exists

However a user at a Secondary Location (Say a Manufacturing unit or a Retail Location) will be able to complete a transaction related to a Warehouse Associated with that location because the system would be able to “connect” to that warehouse, even if the Internet link at that location is down.

Transactions that span across warehouses (Material Transfer, Material Transfer for Manufacture, etc.) on different servers will be only enabled when the connection is available to each warehouse.

For now if we can focus on Delivery Note, Invoices, Material Issue, Purchase Receipt, Purchase
Invoice, Material Receipt, Stock Reconciliation and Manufacture, we should be good.

Good suggestion. We do have similar issues (factories in China, the great firewall that blocks traffic randomly to AWS, digitalocean etc.).

A wish here. As we can’t control safety of machines/servers located at a 3rd-party (compared to at let’s say Amazon), it’s important that the data on the remote-instance can be segmented.

i.e. only contain the absolute neccesary data needed for that supplier and related bom-items.

this way it might also simplify to task of doing 2-way syncronization for the MES data.

If you have other thoughts specific to the manufacturing module, please send them on.



Hi Sir,

I am sorry,

Here is the initial requirement for the manufacturing process i am in
discussion with my client now.

Hi Anton,

What is the driver for the offline need?

  1. Security? You don’t want the manufacturing location to have uncontrolled access to the internet.

  2. Or Unreliable Internet connection? The internet connection is not always on, hence the traditional ERPNext approach will not work.

If it is #1, I’d like to understand the driver a bit more. If it’s #2, yes the offline manufacturing module does all that you have listed.




Hi sir,

Its no 2.
The workshop is not covered nicely with internet,. The client is a tailor
made manufacturing company that do have shops and do their small
manufacturing in separate area.

They would love to have offline solution such as usb dongle because they
rely on 3g signal are sometimes still unreliable.

They do sales, shipment, payment, manufacturing on each site and hope to
transfer all data to main office for consolidation. Client dont have to do
full accounting so they only need some kind of data collection to be sent
to main office.

Thats the driver sir.

Hi Anton,

The solution that I am working on will cover your requirement adequately. Will involve you as I develop this solution. The overall solution will cost about USD 6K. How much do you think you can contribute? I guess it will be dependent on you getting this deal.



Hi Jay

Sorry for late reply,
Yes off course, I think this feature will benefit us as many people are
actually asking for this ability.
I can contribute to the project, we am willing to do 50-50 development
share or we can split it evenly to the parties involved.
I leave it to you for that, just give me notice.

Thanks and best regards

Hi Anton,

Thanks for the offer. I will get back with you in the week of Nov 14 with a plan and a approach.



Is there any update on this feature? I had a similar requirement, so went ahead and created a basic proof of concept with very minimal effort(2-3 days). Here is my design:

  1. Create a doc_event hook for ‘*’ for events such as on_update/delete/submit/cancel
  2. Create a doctype for managing the doctype mirroring. This will contain information like target system, doctypes that needs to be mirrored, items in mirror queue, last x mirrored item information, etc
  3. On receiving the doc_update, queue the items for mirroring. Kick-off the mirroring based on a schedule event
  4. On destination, create/delete/submit/cancel items based on the sender request

I believe this simple mechanism can be useful at high level when you know exactly what doctypes to mirror or what doctypes not to mirror. For branch offices that handle purchase/sales independently, we could use this as a data injector to build federated server at main office. The code I have written currently is quite crude, but happy to update, spend more effort and share if anyone else is interested.

1 Like

Hello Jay

Did this get any traction ? Am willing to contribute if we can make this happen