BI measures

An overview of the Business Intelligence measures available in Vertec

Operating mode

Cloud Suite

|

ON-PREMISES

Modules

Services & CRM

Budget & Phases

Purchases

Resource Planning

Business Intelligence

Created: 22.04.2020
Updated: 23.05.2025 | BI module was redesigned with version 6.8.

The different types of measures available in the Business Intelligence module are called BI measures:

The measures are configured in the folder Settings > Business Intelligence > BI measures. Each measure has the following properties:

Designation

The designation is shown in the BI view and should therefore be as unique and meaningful as possible so that it is clear what is shown. It is an MLstring field.

Active

Only active measures are pre-saved. If there is a default measure you never need to use, you can deactivate it.

If you want to calculate a measure and hide it (for example, because you only need it for a calculation – see derived measure below), you can uncheck the Visible checkbox below.

Internal name
The internal name must be unique because the generator identifies the measure from this name.
Color

You can save a color for each measure. In the BI view, this color is then always shown for this measure, which makes recognition easier. 

All the default measures supplied have already been assigned a color:

When shown in the BI view, measures that do not have a predefined color are randomly assigned one of the colors not yet used in the current view.

Derived measure

If a measure is set as derived, the calculation is not done by the generator, but rather via other measures. In this case, instead of the generator field, there is a field for the calculation:

The calculation is defined by the internal name of the relevant measures.

You can use division, addition (+) and subtraction (-) to calculate measures. Only simple operations (calculation with only one operation) are allowed.

As of Vertec 6.8, it is possible to cumulate values and thus form running totals. You can do this with the new function
sum(<measure>). The measure is given the internal name of the measure to be cumulated.

Generator
The measures are calculated by generators, unless it is a calculated measure (see above).
Unit

You can choose from the following units:

  • Amount: Numerical values, displayed according to regional settings.
  • Hours: Minute values, displayed according to System Settings Display Minutes.
  • Percentage: Percentages, represented as %. Values are interpreted as 1 based quotients. Therefore, a value of 1 is represented as 100%.
  • Quantity: with two decimal places.
  • Hourly rate, displayed according to regional settings.
Visible

Controls whether a measure can be shown in the BI view. This is especially useful if you need a measure to calculate another measure (see calculated measure above) but do not want to show it.

You can also deactivate default measures that you do not need (via the Active checkbox above).

Key date value

Measures marked as key date value are shown in views for a single month or in a time series, and show the value valid per end of the month (this month).    

If the running total is to be shown instead, a derived measure can be created and the measure can be cumulated.

Dimensions

Classes 1 – 5,
Role

Specifies on which classes (dimensions) the measures are available. These must be calculated in the specified generator.

In addition, a role label can be specified for each dimension. This can be used to specify the context of the measure for that dimension.

For example, when calculating the incoming order, the project manager of the project is also returned. If we now see the “incoming order” on a list of users, the context is not clear: Is this the salesperson, are these the salesperson's own services? Here, for example, the role can be specified:

 The role is then shown next to the measure in the BI view:

Help text

You can enter a help text, for example, to explain to the user how the measure is calculated. This is shown as a tooltip in the Bi view:

The display is truncated after 19 rows. Care must be taken to ensure that the text fits in the space available. This is an MLString field.

Creating BI measures automatically from a generator

Measures can be populated automatically from a BI generator with the action menu item Import measure from generator on measures. The following dialog opens:

Script
Select the script that contains the generator. This must be registered in Vertec.
Generator
If there are several generators in the script, you can select the desired generator here.
BI measure
Select the measure defined in the generator that you would like to import.

The dialog shows only the measures that are not yet in the system, or only generators that contain such measures.

Click on OK to import the measure, including dimensions and roles.

For this to work, the generator must be of the type BIGenerator. See article about BI generators.

Standard BI measures

Vertec provides the following key measures by default (the code parts are equivalent):

Designation/ Internal name Description Available on (dimension)
Commenced work

FeesCommenced

External fee for the services of productive projects, which are not on an invoice at the end of the month or whose invoice was charged later.
if not leistsum.rechnung or leistsum.rechnung.valutadatum > enddate:
    leistsum.wertExtOffen + leistsum.wertExtVerrechnet
  • Project
Working hours

WorkingTime

Working hours

->getArbeitszeit(Startdatum, Enddatum)
  • User
Order backlog fee

FeesOrderbacklog

Budget Fees – Cumulative fee externally. Only awarded and not yet completed phases.

bdgvalue('planWertExt', Enddatum, -1) -
leistSum.wertExtOffen + leistSum.wertExtVerrechnet
  • Project
  • User
  • Phase
Ordner intake fee

FeesOrderintake

Budget Fee of newly awarded phases or changes of this budget value during that month.

bdgvalue('planWertExt', Enddatum, -1) -
bdgvalue('planWertExt', (Startdatum-1 Tag), -1)
  • Project
  • User
  • Phase
Remaining budgeted hours

MinutesBudgetRest

Calculated Measure. Expense Hours Budget Total (MinutesBudgetTotal) – Expense Hours Is (MinutesCumulatedPhases).

MinutesBudgetTotal - MinutesCumulatedPhases
  • Project
  • User
  • Phase
Total budgeted hours

MinutesBudgetTotal

Budget hours of granted and not yet completed phases.

bdgvalue('planMinutenInt', Enddatum, -1)
  • Project
  • User
  • Phase
External hours

MinutesExt

External hours

leistsum.minutenExtOffen + leistsum.minutenExtVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Internal hours

MinutesInt

Internal hours

leistsum.minutenIntOffen + leistsum.minutenIntVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Cumulated hours

MinutesCumulatedPhases

Cumulative internal hours of granted and not yet completed phases.

leistSum.minutenIntOffen + leistSum.minutenIntVerrechnet
  • Project
  • User
  • Phase
Downpayment balance

Downpayments

Net amount of all downpayments – advance paid on invoices cleared by the end of the month (value date).

vorschuesse += vorschuesse.nettobetrag
if rechnung.verrechnet and rechnung.valutadatum <= enddate:
    vorschuesse -= invoice.vorschussEffektiv
  • Project
Contribution margin (DM)

MarginContributed

Fees charged externally – costs charged

leistsum.wertExtVerrechnet - leistsum.wertKostenVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
External fee per phase
FeesExtPhases

External fee at the end of the month of awarded and not yet completed phases.

if not ((phase.abgeschlossen and phase.abschlussdatum < startdate) or phase.erteiltdatum > enddate):
    leistSum.wertExtOffen + leistSum.wertExtVerrechnet
  • Project
  • User
  • Phase
Vacation balance

VacationBalance

Vacation balance at the end of the month

->getFerienSaldo(Enddatum)
  • User
Vacation balance accrued

VacationBalanceAccrued

Deferred vacation balance at the end of the month

->getFerienSaldoAbgegrenzt(Enddatum)
  • User
Percentage of completion

PercentageOfCompletion

Calculated Measure. Effort Hours Be (MinutesCumulatedPhases) / Effort Hours Budget Total (MinutesBudgetTotal).

MinutesCumulatedPhases / MinutesBudgetTotal
  • Project
  • User
  • Phase
Headcount
Headcount

Quantity of employees at this time (entry date before the end of the month, no exit date or exit date after the end of the month). The workload does not Role for this value.

if not (enddate < user.eintrittper or (user.austrittper and startdate > user.austrittper)):
            headcount = 0 if user.austrittper and user.austrittper < enddate else 1
  • User
External fee

FeesExt

External fee

leistsum.wertExtOffen + leistsum.wertExtVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
External fee written off

FeesExtWrittenoff

Fee charged internally – Fee charged externally

leistsum.wertIntVerrechnet - leistsum.wertExtVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
External fee open

FeesExtOpen

Fee externally open

leistsum.wertExtOffen
  • Project
  • User
  • Phase
  • Servicetype
External fee charged

FeesExtCharged

Fee charged externally

leistsum.wertExtVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Internal fee

FeesInt

Internal fees

leistsum.wertIntOffen + leistsum.wertIntVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Internal hours per phase
MinutesIntPhases

Internal hours at the end of the month of granted and not yet completed phases.

if not ((phase.abgeschlossen and phase.abschlussdatum < startdate) or phase.erteiltdatum > enddate):
    leistSum.minutenIntOffen + leistSum.minutenIntVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Costs

Costs

Costs

leistsum.wertKostenOffen + leistsum.wertKostenVerrechnet
  • Project
  • User
  • Phase
  • Servicetype
Cumulated external fees
FeesCumulated

Calculated Measure, cumulative measure External fee (FeesExt).

sum(FeesExt)
  • Project
  • User
  • Phase
  • Servicetype
Productivity
Productivity

Percentage of recorded hours on productive projects compared to total effort. Maximum value = 1.

minutenInt = leistsum.minutenIntOffen + leistsum.minutenIntVerrechnet
minutenIntUnprod = leistsum.minutenIntOffenUnprod + leistsum.minutenIntVerrechnetUnprod
productivity = (minutenInt - minutenIntUnprod) / minutenInt
  • User
Standard hours

SetTime

standard hours

->getSollzeit(Startdatum, Enddatum)
  • User
Hourly rate chargeable

RateChargeable

Calculated Measure. External fee (FeesExt) / Internal hoursMinutesInt).

FeesExt / MinutesInt
  • User
Overtime balance

OvertimeBalance

Overtime balance at the end of the month

->getUeberzeitsaldo(Enddatum)
  • User
Turnover outlays

TurnoverOutlays

Outlays charged (value date of invoice)

rechnung.auslagenExt
  • Project
  • User

Only available if Purchases module is licensed.

Turnover services

TurnoverServices

Total charged after discount (value date of invoice)

rechnung.leistWertExtNachRabatt
  • Project
  • User
Turnover expenses

TurnoverExpenses

Expenses charged (value date of invoice)

rechnung.spesenExt
  • Project
  • User
Full-time equivalents

Fte

Employment level

->getBeschaeftigungsgrad(Enddatum)
  • User

Netherlands

United Kingdom