Modules

Modules

Explore the DMSContainer modules: Email, Report (PDF from DOCX), Excel export, Single Sign-On, EventStreams and SynchUtils — ready-to-use backend services for Delphi and microservice systems.

dms.email

Email Module

Available since v3.0

We use email for almost every kind of notification, digital and beyond. Why should it be complicated to give your own system a robust email-sending engine? And what if that engine supported templates, multiple recipients, delivery notifications, return receipts and automatic resend on failure? Meet the well-known Email Module, used for years in mission-critical systems.

Email Module — key features

  • Send email with attachments
  • Send template-based bulk email, for both the message body and the attachments
  • Manage multiple sending users with different roles
  • Monitor queued email
  • Send email into the future! Delayed emailing lets you schedule one or more messages instead of sending them immediately.
  • Supports SSL and PEC (certified email)
  • Robust, solid, used for years in mission-critical systems
dms.report

Report Module

Available since v3.1

Every system needs to generate some kind of report. Some are very complex, others are relatively simple and must be customizable directly by the end user without much effort. How useful would it be if the end user had all the power of a familiar tool like MS Word (or LibreOffice) to customize their reports on their own? That is exactly what the Report Module is for.

Report Module — key features

  • Generates high-quality PDF reports from DOCX templates and JSON data
  • Can produce a single PDF or multiple PDF reports depending on the data structure
  • Supports all the advanced features of MS Word and LibreOffice Writer
  • Supports master/detail reports with arbitrary nesting
  • The end user can edit the report with a familiar tool such as MS Word and/or LibreOffice Writer
  • Supports a large set of built-in filters to customize the report, plus custom filters defined easily in Python
  • Supports asynchronous report generation
  • Can generate reports and email them as soon as they are ready
dms.excel

Excel Module

Available since v3.1

There is no point denying it: sooner or later every user will ask for an MS Excel export of their data. The Excel Module lets you answer that need quickly and proactively.

Excel Module — key features

  • Generates Excel files from structured JSON
  • Supports all formatting elements and formulas
  • Supports multiple worksheets in a single workbook
  • Supports Sparkline charts
  • Extremely fast, even for large Excel files
  • Requires MS Excel neither on the client nor on the server
dms.sso

Single Sign-On Module

Available since v3.0

Do you really want to reimplement and maintain yet another user-management system? Don’t reinvent the wheel — leverage the best design patterns available.

Single Sign-On Module — key features

  • Sign in to multiple systems with a single username and password
  • Centralize user management across several different systems with ease
  • Define application contexts to profile each user’s access and privileges
  • Manage users directly from DMSContainer through the convenient web administration
  • Use data contexts to distribute hierarchical configuration to users
dms.events

EventStreams Module

Available since v4.0

Do you really want to decouple your system’s components and/or communicate with other systems effectively and efficiently? No — polling and/or shared data storage are not the right way! The EventStreams Module (available in DMSContainer 4.0.x) lets you solve every integration and notification problem between systems, even heterogeneous ones. Communicating through push notifications is no longer complex and difficult — it becomes a simple, efficient way to elevate the underlying architecture of your software solution.

EventStreams Module — key features

  • Send messages to one or more queues, transactionally if needed
  • Integrate heterogeneous systems without creating dependencies that pollute the system architecture (e.g. Desktop/Mobile or Web/Mobile)
  • Let a component perform operations in response to an event generated by any other component of the system
  • Implements advanced “queue purging” to avoid storage problems
  • Listen to “events” generated by microservices hosted by DMSContainer and react accordingly
  • Listen to “events” generated by external systems integrated with DMSContainer and react accordingly
  • Provides ready-made solutions for the most common use cases and is very simple to use

“There is probably no non-trivial system that cannot benefit from the EventStreams Module.” — a user

Note DMSContainer Standard includes the light version of the EventStreams Module. EventStreams “light” has the following limitations compared to the version shipped with DMSContainer Professional:

  • Does not support message TTL
  • The EnqueueMultipleMessages and EnqueueMessageTTL APIs are not available
dms.synch

SynchUtils Module

Available since v4.1

One of the most common situations in distributed systems is having a shared resource: a database record, an invoice, an order, a generic aggregate root, a file, a hardware device, a log file and so on. In short, whenever it must not be possible to start modifying an entity while someone else is already modifying it, the SynchUtils Module is the solution! The SynchUtils Module (available in DMSContainer 4.1) solves every synchronization problem between distributed systems that share access to a common resource.

SynchUtils Module — key features

SynchUtils manages exclusive locks. With this kind of lock (conceptually similar to the critical sections offered by operating systems) it is easy to implement the design pattern known as the pessimistic offline lock, which prevents simultaneous updates of the resources managed by the system.

  • Resources can be records, files, complex structures (graphs) or anything else that might be read and/or modified concurrently by more than one client
  • SynchUtils’ exclusive locks are distributed and accessible through a convenient JSON-RPC API
  • When a user wants to update a shared resource, they try to acquire a lock; if they succeed, no other user can modify the same resource until the lock is released or expires
  • An advantage of the pessimistic locking model is that it avoids the conflict-resolution problem by preventing conflicts from happening in the first place
  • Updates are serialized, and each subsequent update starts from the changes made by the previous user
  • Provides ready-made solutions for the most common use cases and is very simple to use