Impac!™ - Reporting Solution

What is Impac! ?

Impac! is the reporting solution provided by the Maestrano Suite. Its goal is to provide useful data to the end users for them to understand their business better.

A unique feature provided by Impac! is to combine data coming from several sources. The main data source used is Connec!™ that stores accounting, sales or HR data gathered from the end-user's applications. By doing so, Impac! is able to present various types of reports ranging from standard accounting reports such as profit and loss and balance sheet, or to draw a workforce summary report based on current data.

In a sentence: Impac! captures raw data, and crunches it into beautiful reports.

Two parts compose this solution:

  • An extensible back-end (Ruby), which lets you determine where to take the data from (Connec!™, internal Data Warehouse, third party APIs, etc...). The back-end is responsible for aggregationg and transforming data into meaningful reports.

  • An open-source front-end library (AngularJS) designed for extensibility and proposing a collection of standardised widgets out of the box. The widgets can be all type of diagrams, charts, tables and figures. This JavaScript library is easy to extend and integrate into your own front-end application.

Interactions with other Components

Most of the components of the Maestrano suite have interactions with Impac!:

  • Mno-Hub stores the settings for all the dashboards, widgets and KPIs. This is also the component that will take care of authenticating the users' requests via the IdM API.

  • Connec!™ is in charge of storing the company data, and to expose standard reports via its API. Connec!™ notifies Impac! in real-time of any data modification so reports displayed are always up to date.

  • Mno-Enterprise serves Impac! Angular in the front-end part of the gem, and also interacts with Mno-Hub to retrieve the display settings.

  • The Connectors don't directly interact with Impac!. Yet, being a source of data for Impac!, you must consider them when developing new widgets.

Caching and Background Computation

To retrieve the data it needs to compute the reports, Impac! uses two modes:

  • a "pull" mode: the raw data is fetched from the Connec! API when a user tries to display it dashboard.

  • a "push" mode: Connec! is sending all the data to Impac! upon each data update. In this mode, Impac! will recalculate the full report every time it receives an update notification.

By using some caching mechanisms both in Connec!™ and in Impac!, the more recent "push" mode aims to fasten the generation of the reports. The ultimate goal is to have the reports already ready when the user accesses his dashboards.

Ultimately the "pull" mode will disappear and it will no longer be necessary to query Connec! after each notification either. What Impac! will do is to store the aggregated data it needs to calculate the widgets in its own database. This way, by the time a user requests a widget, all the data is already calculated and saved in Impac!, ready to display.

More details on the Background Computation in /wiki/spaces/EN/pages/92635234.

Extend Impac! using the Reporting Framework

On its API side, Impac! is separated into several calculation units that we call "Bolts". Each bolt is in charge of producing widgets for a given thematic. For example, we can imagine we have a "Finance" bolt that will calculate profit and loss, balance sheet, or cash flow statement reports. The "HR" bolt will prepare reports related to employees and payroll, and so one.

All the bolts are standardised using an open-source library developed by Maestrano that composes what we call the "reporting framework". This is a collection of developer tools that eases the retrieval of data and the creation of widgets.

If you need to create some widgets of your own, you can create your own bolt, which will be in fact a new Rails application based on this libray. Your bolt will be able to get its data from any internal data repository, and to output widgets in the format of your choice.


On the front-end side, Impac! uses an open-source JavaScript (AngularJS) library to display the users' dashboards and widgets. This library can also be extended if you need to create custom templates for your widgets.

This library can be easily injected in your own front-end applications if required.

More details on Impac! Angular open-source library here.


When do I need Impac! ?

Impac! is the solution you need if you are looking for an easy way to provide business reporting to your end-users.

The extensiveness of this solution makes it potentially compatible with any kind of data you may be holding in your information system: whether you want to show metrics on inventory or bank accounts, you can always create a bolt that will output the adapted report.

By default, Impac! proposes 50+ widgets covering common metrics of accounting, HR, and sales. The developer tools provided with the framework make it possible to develop new ones in no time. You should consider integrating Impac! to your application if you have unexploited data your end-users may be interested in, and you don't want to build a whole new solution from scratch.