Jump to content

Structure large project (ERP)


d.bernaert

Recommended Posts

Hello,

I have a pretty complex situation and I would like to hear from others who are in the same situation how they handled this.

We are working on a pretty large ERP application, but it needs to be modular.

By this i mean users an activate modules or deactivate modules depending on their subscription. That's basically no problem with enabling items in combination with their account.

But we also have a custom software for several customers that uses the same core (relations, ...).

How would you organize this? One big project (all ERP modules + custom software in one big project)?

Or would you create several projects where the core is one project and custom software are separate projects. Problem in that case is that both projects will probably use common functionality (for instance customers, suppliers, ...) Also interaction can be possible between both, someone can use all ERP modules + some extra tailor-made functions...

Any suggestions or ideas are more than welcome.

 

Dominique

  • Like 1
Link to comment
Share on other sites

Hi Dominique

I had the same situation in a vcl desktop situation  years ago.  I started with different modules and functionality in .dlls. Based on the subscription the user get extra functionality. After a year a build all functionality in one .exe because sometimes functionality of a .DLL or  a part  was needed in a other part of the software. Not in the beginnen because the design was completed but after a year new functionality was needed.

Sure it can be done but you have to design you program in small pièces. Now i put procedures or functions in datamodules so i  can call them when needed and linked to the forms or modules where user can have subsriptions for. This is the way i build my unigui programs. 

I m also interestet how other members deal with this and learn from it.. so i hope more members will share there experiance 

 

Regards peter 

Link to comment
Share on other sites

Ok thx,

so one big application.

So i have 2 more questions: what database access to use? I'm on Firebird. I'm now using Ibdac, works great and stable. Would it be better to use for instance Data Abstract which works in disconnected mode (only connecting for fetching and updating) or would the benefit for scalability be minor?

Third question is the structure of the databases. I now have 1 big database for all companies working on the platform. Do you use 1 database or 1 database per company? I'm just thinking about maintenance with structure updates, now I only have to update one database, if I have 50 it requires some work or additional tooling to get it done.

Thx,

Dominique

Link to comment
Share on other sites

Hi

I use mysql server with devart component. Easy to host and built mirroring.

I have a out 30 customers using the application and every customers has own database environment.

Every database environment has via own database backup/restore possibility which we manage.

Using a SQL script it is easy to update or change tables. Yes hou have to do it several times but thats easy to automate. But restoring database for one customer can be tricky when eveything is in 1 environments. 

See also

https://digitalguardian.com/blog/saas-single-tenant-vs-multi-tenant-whats-difference

Link to comment
Share on other sites

I have DB with all modules functionallity.
Application with all modules for administrators and a lite version with full modules for non administrators.
Menu is constructed by each application, reading  contracted modules, which, have or not prerequisites.

And so you can assemble the final version for each client.
If 1 only wants billing, sales and stock, only that works, or, if accounting module wants for add, it works, or aggregate clients controls, or suppliers controls, subsidiarys, cash, close of box, bulk or itemized sales, logistic, etc. etc.
All governated by database.

And if somebody wants some very special.... not included, a custom development override some standard module, and a particular version is provided.
 

 

Link to comment
Share on other sites

have a unique database:
Advantages: Deploying a new customer, just create a new user or store

Backup is also easier as it is just a bank.

disadvantages:
separate benches

Smaller banks are usually faster.
faster backups,
You can restore the backup only from one client without affecting the others.
reports will run faster because you won't have to do filters by user or store.

In this model, on a shared server, where you will have numerous banks, you can have a specific bank for common public tables that are not managed by clients, such as
CEPS tables,
STATES,
and other information that can be standardized for all banks.

you will have to see what may be best for you

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...