About KPI Balanced Scorecard


KPI Balanced Scorecard is an Odoo app, which allows users to set up KPI targets and control their fulfillment by periods. The app introduces a convenient KPI dashboard to manage companies and personal targets. It helps to organize work as a set of periodic goals and to control those goals in any business or functional area. For that purpose:

  • The app introduces a clear system to get Odoo storable details: a count of records, a sum or an average of numeric fields, or even pure Python code.
  • Actual values are re-calculated by the special Odoo cron job. So, it is always possible to understand which KPIs require more attention in real time at first glance.
  • You can share KPI targets with interested users to organize a transparent dashboard of goals: from global to particular ones.
  • It is possible to consider only those KPIs that are of interest: for example, only sales-related or of a definite user. Hierarchy allows highlighting targets with indicative padding for an instant overview of sub-KPIs. 
  • Help hints are available for most objects to simplify KPIs setup (turn on/off help tabs through the app configuration page)
  • The module supports the multi-company environment, and, therefore all KPI calculations and settings are configured for each company separately.

Set KPI Targets by periods

Drag and Drop interface for KPI formulas

Use any Odoo data to calculate KPIs

Auto and regularly updated KPIs




Concepts and terms


Here you can find all the terms that were used in the documentation.

KPI (KPI Formula, Key Performance Indicator) - the formula/instruction for Odoo that defines the way to calculate figures based on existing Odoo data and settings. This central configuration object introduces the tool to construct mathematical expressions in a user-friendly manner through drag and drop. These are the examples of KPI: Total Sales in Europe, Done Tasks per Day of John Brown.

A KPI Period - a time frame for which companies set their targets to control performance (in a similar way as financial performance is controlled within accounting/fiscal periods). You can set periods of any length and for any date, usually some yearly (2024, 2023), quarterly (Q1 2024, Q2 2024), monthly (Jan 2024, Feb 2024) approach is applied. KPI Targets are calculated for each specific period.

KPI Targetactual company goal based on specific KPI and KPI period. It allows setting a planned KPI value, so it will automatically calculate a real value based on Odoo data and the KPI formula for this KPI period. KPI targets are set regularly for each analytic period by responsible managers and might be shared among interested users to control results continuously. These are the examples of KPI Targets: Total Sales in Europe in 2024 (target: $1,000,000; actual: $800,000); Done Tasks per Day by John Brown in July 2024 (target: 1,5; actual: 2).

Basic measurement - the core configuration object used for retrieving actual KPI values from Odoo data. Although basic measurements are not used for formula constructions, they are required to prepare any sort of formula variables. These are the examples of basic measurements: Aggregated Sum by Done Sales Orders (the period is defined according to a sale order date); The Total Number of Tasks in the State ‘done’ (the period is defined according to the last stage update date).

Python code measurement – a specific type of Basic measurement, which requires technical knowledge and allows the creation of instructions for the module on how to get the data from Odoo.

Measurements (Variables) - a specification of a basic measurement. The key idea of distinguishing KPI Variables from Basic measurements is to simplify data preparation. You define 'Total Sales' once, and then unlimitedly use it for 'Sales Europe', 'Sales John Brown', 'Website Sales', etc. Measurements are used to prepare KPI formulas (available for drag and drop).

Constant - the special type of KPI Variables used when data can not be retrieved from modules and/or when figures remain the same during the whole period. For example, 'Total Investments' or 'Number of Employees' are often frozen for a specific period. Constants are used to prepare KPI formulas (available for drag and drop).

KPI Scorecard - the special interface to configure and control targets, which are shown according to a chosen period. The interface allows you to choose, close, and re-open periods; set, substitute, and filter KPI Targets; see KPI History.

A KPI Category -  KPIs storage, which is used for convenient navigation over KPIs and managing access rights to them. To control KPIs related to specific areas combine them into corresponding categories. For example, 'Sales KPIs' and 'Team Europe KPIs'.

A KPI Tag - is a special object to structure KPI targets, used for convenient management and search.

KPI History – the special interface of a specific KPI target to control its KPI values by all periods, including a graph of similar periods.

Closing KPI period – the special action to stop KPI re-calculations and finalize the period results (can be compared with closing a fiscal year).

KPI User - any internal user, that has access either to see or edit one or several KPIs or KPI Categories.

KPI Manager - the assigned user or users, that have full rights for all KPIs disregarding the settings. 



The difference between KPI and KPI Target


Two important concepts are used in the module: KPI and KPI Target. They have significant differences.

KPI or Key Performance Indicator is a formula, that represents a measurable value that demonstrates how effectively a company is achieving key business objectives. It is used to evaluate the success of reaching a company's goals. It may focus on the overall performance of the business, of some smaller departments (sales, appointments, HR...), or even particular employees.

The company's performance based on a particular formula is stated in the Single View Interface in the column 'Actual Value' (see Single View Interface). 

A KPI Target is a goal, a particular number/amount. It has guidelines and requires a formula to be calculated. Therefore we can imagine it as Formula (KPI) + Period.

In the Single View Interface, KPI Targets are stated in the column 'Target Value'(see Single View Interface). 

KPI Target is put manually, by the responsible for that person. To be valid, the goal should be SMART. The letter in the abbreviation SMART stands for:

1) Specific (related to a particular Odoo model)

2) Measurable (see Measurements)

3) Achievable (possible to fulfill)

4) Relevant (acute for the company development)

5) Time-specific (see Periods).

KPIs (key performance indicators) - are measurements that aim to evaluate the organizational or personal success of a definite activity. Different companies have different KPIs depending on their strategy and business area. However, all KPIs have a common core attribute: they must be measurable within a target period. To that end, KPIs allow the construction of formulas to retrieve Odoo data sets and process those into real figures. Formula preparation is as simple as it is to write down a mathematical expression: just drag and drop formula parts in the right order with correct operators. KPIs, KPI periods, and KPI targets KPIs represent the list of success figures you may use to plan your company activities. Simultaneously, measurements are almost senseless unless you have target values for those KPIs. That is possible only within a time-constrained period. 'Sell as much as you can' is not a goal, while 'Generate 100,000 Euro Revenue in the year 2024' is a good aim for a salesperson, for example. To that end, KPI periods are introduced.

A combination of a KPI and a KPI period results in a KPI target. Exactly with those targets you work on the scorecard interface. For each KPI you would like to manage in this period, you should define a planned value to compare those to the actual at the end of the period.

So, a KPI itself defines how to compute the actual value for a period and how to estimate the result ('the more the better' or 'the less the better'), but does not assume setting targets. The latter should be done for each period.



Basic Measurements


Basic measurement is the core object used for retrieving actual KPI values from Odoo data. Although Basic measurements are not used themselves for formula constructions, they are required to prepare any sort of Variables.

A Basic measurement represents the most general instructions for the module to find the data, while Variables specify those. For example, 'Total Number of Sale Orders' should be a Basic measurement, while a narrower 'Number of Quotations of the Sales Team Europe' is recommended to be a precision of that basic measurement - Variable. Each Basic measurement might have an unlimited number of linked Measurements (Variables).

By default, the KPI module contains some Basic measurements, which you can use to create Variables. 


To create a Basic measurement:

1. Go to Measurements > Basic Measurement

2. Click 'New'

3. Type a name and optionally add a model type before it (for example [purchase]) to find the measurement quickly

4. Choose a KPI Type, to activate a set of further fields and define the way the module will get the information for calculations (for example, the records can be counted or the value of particular record fields will be counted)

5. Chose a Model, an Odoo object from which the data will be taken (for example, Sale Orders, Purchases, Quotations)

6. Based on the KPI Type you will see a set of other fields 

7. Add a 'Measure field' for the analysis (the fields from which the module will take the data to count, to calculate the sum of records or count the average value of the fields (Only for types: 'Sum of records field', 'Average of records field')

8. Add one or several date fields (those are fields, that will be taken into consideration in the calculations when the period is stated, for example, order date or delivery date). If you choose several fields, then, for the record to be considered for calculations, both of those fields should be within the period

9. Add a company field for the analysis, if you work in a multi-company environment (for example, if you have 2 or more companies, you may want to calculate KPI for each of them, so for the app to be able to distinguish companies, the field should be added as you create a Basic measurement)

10. It is possible to add some filters, but it is recommended to add only basic ones and then, specify them while creating a Measurement (Variable) (thus, your Basic measurement will be more general and so, you will have more possibilities for creating a Variable. For example, you created a Basic measurement 'Sales Total', which you can use to create Variables: Sales Total Team America, Sales Total Team Europe, Sales Total John White...)


The first field 'KPI Type' defines how Odoo data should be calculated:

1) Choose the KPI Type 'Count of records', if you want to count all matching records, for example, the number of registered leads or the number of posted customer invoices

2) Choose the KPI Type 'Sum of records field', if you want to sum up a certain number field of records, for example, the sum of the total amount of all orders  or the sum of paid taxes by invoices

3) Choose the KPI Type 'Average of records field' to get the average of record's number fields, for example, average planned hours per task or average days to assign a lead

4) Choose the KPI Type 'Executing Python code' to compute any sort of figures based on any Odoo data. This type requires technical knowledge (see Executing Python code)


The second field 'Model' defines an object, from which the information is taken. It assumes that you define how records should be searched and which record fields should be used for computations. For example, 'Sales Order', 'Task', 'Lead/Opportunity'. You can also rely on standard or custom objects (including those created in the Odoo studio)

The third field 'Measure field' is required only for the calculation of the KPI types 'Average' and 'Sum'. It defines which figure you use for calculations. For example, 'total amount' of Sales Analysis Report or 'work hours of tasks'. It is a 'Column' in the database table related to the model above.

Depending on the model that you choose, the list of fields varies. For example, the model - 'Articles' has such measure fields as likes or dislikes number, referred to in emails; and the model - 'Sale Order' has such fields as total, delivery orders, and invoice count. 

The fourth field 'Date fields' is required to understand whether a specific document type relates to a considered period, so, how to distribute objects by time intervals. It assumes that you define how records should be searched and which record fields should be used for computations.

Each model has its list of available date fields. The object's fields, which contain information about time can be chosen. For example, for tasks, you might use the create date to analyze jobs registered within this KPI period (e.g. 'Total number of tasks created in January 2024'), order date for a sale order, revision date for an article, and reserved time for an appointment. 

For example, you create a Basic measurement 'Total Sales' for the model 'Sales Order'. In the field 'Date Fields' you choose 'order date'. Then, after creating the corresponding Variable and KPI Formula, you set a KPI Target to receive 100000$ for the Period 'The Year 2024'. The module will get the instructions, to consider only the sale orders, which were created during this particular period. Those sale orders, within the period, will be used for calculations of the actual value.

It is also possible to apply a few date fields, so matching to ALL of those date objects will be considered(e.g. 'Opportunities opened and won in January 2024').

If date fields are not specified, the calculation will consider all records for all times regardless of the period. For example, you created the Basic measurement 'Total Sales' and left the date field empty. After setting the KPI Target, the module won't get any instructions on how to filter objects by dates, or where to get the information about the date. That means the KPI Period would not influence this Basic measurement. Therefore, all existing sale orders disregarding the period will be used for calculations.


The fifth field 'Company Field' would be needed for a multi-company environment. This field gives instructions to the module, where to search for the related to a company model.  

Even after choosing this field on the Basic measurement level, you can create a global Variable, that will count the result disregarding the company. For that, leave the field 'Company' empty.

For example, you create a Variable 'Total Sales Chicago' based on the Basic measurement 'Total Sales' and in the field 'Company' choose the Company Chicago. If you didn't choose the field, from which the module will decide to which company an object relates (while creating the Basic measurement), then as you set the KPI Target, you still will see the global result - the total sales of all teams.


The section 'Filters' shows you records, which relate to the chosen module and will be used for getting the value for calculations. 'Filters' also allow you to restrict records set by any stored field. For example, you may calculate the count of only won opportunities based on stage settings or only posted customer invoices based on journal entry type and state. 

Let's add some filters to create a Basic measurement 'Posted Customer Invoice'. In this case, we need to filter records by type and status. The first filter is 'Move Type = Customer Invoice', and the second one is 'Invoice Status = Open'. Above the filtering options, we can choose, whether the records should match ALL or ANY of our filters. As we chose ALL, only records, which correspond to both move type and invoice status will be considered for further calculations. Click on the button 'N records' to see all the matching invoices.

It is recommended to use 'Filters' for low-level filtering in Basic measurements and then specify them in KPI Variables. This way, you avoid double work and create more Variables based on one Basic measurement.


Also, avoid adding dates to the filtering options, as then you will be required to change dates every time you create a KPI Target for a new Period. If you don't add dates' restrictions as a filter, you will be able to simply 'Substitute Targets' and records will be analyzed based on the fields chosen in the fourth field 'Date Fields' (For example, 'Create Date') (see KPI Scorecard).

Executing Python code

'Python code' is a special type of basic measurement. This type requires technical knowledge but lets you compute any sort of figures based on any Odoo data without restrictions. Such measurement might be any Python basic script with the possibility of SQL queries (through using 'env.cr') In calculations you may rely upon the special variables: 'period_start' (the first date of the period), 'period_end' (the last date of the period), 'period_company_id' - res.company object for which Odoo makes calculations at the moment (according to a KPI period under consideration) Correct Python code assumes saving the value into the special variable 'result'.

Basic measurements of the type 'Execute Python code' can't be any more specified, since they do not relate to any records. However, such measurements should have a single KPI variable linked.

Basic Measurements Examples

Based on one Basic Measurement you can create multiple Variables to use in different KPIs (see Measurements (Variables)). Here are some Basic Measurement Examples, that you can create:

Leads and Opportunities Count


The Purpose of the Basic Measurement is to count all Leads and Opportunities. This way you can find out the exact number of all Leads and Opportunities that your salespeople processed.

Confirmed/Done Sale Orders Total


The Basic Measurement that sums the total value of All done Sale Orders. Choose the 'Measure field' - 'Total', so the module will sum the value from it. In order to consider only 'done' orders, add 2 Filters: Status = Sales Order; Status = Sales Done. Make sure that records should match Any of those filters. This way you can find out how much did the company earned on sales. 

Posted Customer Invoices Count


The Purpose of the Basic Measurement is to count all posted customer invoices. In the field Filters, choose: Type = Customer Invoice and Status = Posted. This way you will know how good the sales process goes.

Purchase Order Total


The Basic Measurement that sums the total value of All Purchases. Choose the 'Measure field' - 'Total', so the module will sum the value from it. This way you will know how much money was spent on the vendors products for a particular period of time.

Product Types


Count all the products types in stock. This way you can find out how many product types are available for sale.

Working Days to Close


The Basic Measurement to count for what number of days all tasks were completed. This way you can find out how much time your workers needed to finish their work.

Average Duration of an Appointment (for the module Universal Appointments)


When the time of the appointment isn't set and can vary, create this Basic Measurement to track the Average time of an appointment. For example, what is the average time, that users book to rent a car. This way you can find out what services require more time and therefore introduce interesting discounts to make other appointments last longer.

The Total Number of Likes in an Article (for the module KnowSystem)


Use the Basic Measurement The Total Number of Likes to assess the quality of the articles in general. To take into consideration only popular articles, add a Filter Views > 10. This way you can see the users activity on the article's page and whether the article's are successful overall.



Constants


KPI Constants are the special type of KPI Variables used when data can not be retrieved from modules and/or when figures remain the same during the whole period. For example, 'Total Investments' or 'Number of Employees' are often frozen for a specific period.

In comparison to measurements, KPI Constants are fixed and they do not depend on actual Odoo data. This allows the introduction of the figures which can not be retrieved from modules and/or which should remain the same during the whole period. For example, you might set the 'Total Size of Investments' to calculate return on investments, or the 'Number of Salesmen' to get sales revenue per person.

To create a Constant:

1. Go to Measurements > Constants

2. Click 'New'

3. Type the constant's title

4. Put the global value (the number which will be used for all periods, except for the specified ones)


KPI Constant value might be defined for each period.

Besides, for each period the app automatically tries to calculate a parent period. In one period is fully inside another one, the latter is considered as a parent for the former. For example, Y2024 (01/01/2024 - 12/31/2024) is a parent of Q3 (07/01/2024 - 09/30/2024); Q3 is a parent of July (07/01/2024 - 09/30/2024); but for 06/30/2024 - 07/31/2024, the parent would be Y2024, since this period is not fully inside Q3.

If there is value neither for this period nor for its parent, the global value would be applied. 

To define a value for a particular time frame:

1. Start creating or editing a Constant

2. Find the tab 'By periods' and click 'Add a line'

3. Choose an existing period and type the value for this period, that will be used for calculations instead of the global value

As an example, let's create a constant 'Number of Employees'.

The Global Value - the general number of employees - is 20. This value will be used for all calculations containing the constant 'Number of employees'.

For the year 2024, however, we define the value as 21 employees.

But during the year we had some changes. In the first quarter of 2024, the company had 18 employees. During the second quarter, one more employee was hired, so we had in total of 19 employees. So let's add the value for these periods. Now, 18 is used for calculations for the first quarter of 2024 and 19 for the second.

As we don't state the number of employees for the third quarter, the value for its parent - Y2024 - '21' will be used for calculations. 

For quarter 1 of 2024, there is no value and it doesn't have a parent value, so the global value - '20' would be applied.




Measurements (Variables)


Measurement (Variable) - is a specification of a basic measurement. The key idea is to simplify data preparation. You define 'Total Sales' once, and then unlimitedly use it for 'Sales Europe', 'Sales John Brown', 'Website Sales', etc.

Specify Basic measurements through the Odoo built-in domain constructor, which lets to filter by any storable attributes. Add more filters to Basic measurement by creating a Variable. 

For example, create a Basic measurement 'Sales Count' for the Model 'Sale Order', which counts the number of sale orders. The Basic measurement uses the KPI Type 'Count of records'. Apply filters 'Status = 'sale'; Status = 'done'' to the Basic measurement. Based on the Basic measurements you can create other Variables: Sales Count America, and Sales Count Europe using the filter 'Sales Team > Sales Team contains 'Europe'/ 'America'. Or you can create a Variable to count sales of a particular salesperson, by the filter 'Salesperson ID = 2'. 


Another example is based on the Basic measurement 'Opportunities: Average Expected Revenue' for the Model 'Lead/Opportunity', which calculates the average revenue and uses KPI Type 'Average of records field'. Based on this measurement you can create a Variable to count the average expected revenue only on the stage 'Won'. For that purpose, use the Filter 'Is Won = Won'. You can also create a Variable to see the expected revenue of a particular salesperson with opportunities only on the Won stage. You can use the same Filter 'Is Won = Won' and add one more 'Filter Salesperson ID = 2'.


Based on one Basic measurement you may create as many Variables as you need. Or you can create one Variable, by simply linking it to Basic measurements (Basic measurements are not used to create a formula by themselves). For example, create a Basic Measurement 'Total Sales' and link it to a Variable 'Total Sales'. 

An exception is Basic measurements of the type 'Execute Python Code'. As they work on the code level, they cannot be anymore specified. So there can be only one linked Variable (see Execute Python Code).

There are two default Variables, that you can use for creating formulas within the time frame. You can find them right in the formula wizard (see KPI Scorecard). Those are:

1. 'Period Days' (the number of days in the period). KPIs with this Variable calculate the result based on the number of days in the current period. For example, Q3 (07/01/2024-09/30/2024) Period Days would be 92 days.

2. 'Days Passed' (the number of passed days in the period). KPIs with this Variable calculate the result based on the number of days passed in the current period. For example, Q3 2024 on the 15th of July would be 15 days, on the 1st of September - 62 days, and on the 30th of September - 92 days.

For example, you can see the Total Sales per Day. Both Variables apply to this KPI, but in the first case, you will see the accurate result only on the last day of the period, as it will compare the actual value with the total number of days in the period, even if the period is a month and at the moment only a few days have passed. The Variable 'Days Passed', on the contrary, will always show a more accurate result as will compare the actual value with the number of currently passed days. And each day the number of days will change (+1).

Let's create a KPI 'Total Sales' with the Variable 'Period Days', to find out how much you earn for a day. Set the KPI Target for the 3rd quarter of 2024. The length of the period is 92 days, so the Total Sales will be compared with the number of days in the period. At the beginning of the period, the results will be not accurate as a few days or weeks have passed and the period is not yet over.

Let's create the same KPI, but now with the Variable 'Days Passed'. Here the Total Sales will be compared with the number of already passed days. This number is dynamic and it changes as the days go by. So, we set a KPI Target for the 3rd quarter of 2024. Today it is the 15th of August, and therefore only 46 days have passed. Today the Total Sales will be compared with 46 days. Tomorrow with 47 days. So, the result is much more accurate, than when we use the Variable 'Period Days'(which is accurate only on the last day of the period).


Variables are used to create a KPI. The KPI may relate to a particular company. As you create a Variable choose the company it relates to, so only the objects related to the company will be considered for calculations. Therefore, you will be able to calculate, for example, the 'Total Sales' of each of your companies separately. For instance, create a Variable 'Sale Team America > company USA' and 'Sales Team Europe > company Belgium' and assign each to the corresponding company. If you don't specify the company, then KPI Variables would be available for all users of all companies. Otherwise – under a certain company, users would be able to see only those related to that company objects.


To create a Variable:

1. Go to Measurements > Measurements (Variables)

2. Click 'New'

3. Type the name of the Variable

4. In the field 'Measurement' choose a Basic measurement

5. Choose a company or leave the field empty, to make this Variable global

6. Optionally add some filters


From a Basic measurement form view, you can access all linked variables:

1. Go to Measurements > Basic measurements

2. Open any Basic measurement

3. In the top right corner of the Basic measurement you will see the number of Variables, based on it

4. Click on the button to see the list of Variables

5. Click on any Variable to see its card


Variables Examples

Here you can find some possible Variables that specify useful Basic Measurements (see Basic Measurements Examples).

1. Basic Measurement - Leads and Opportunities Count

Leads Count/Opportunities count


You can separate Leads from Opportunities, to see the result for each separately. For that add the Extra Filter Type = Lead or Type = Opportunity.

Leads and Opportunities with High Probability


See only Leads and Opportunities with high probability. You can manually set how high it should be. Add the Extra Filter Probability >= 70. 70 is the percent number.

Won Opportunities


See only won Opportunities, to compare their number by periods and track the effectiveness of work. Add the Extra Filter Is Won = Won.

2. Basic Measurement - Confirmed/Done Sale Orders Total

Total Sales


Even if there is no need to specify the Basic measurement, match it to a Variable, so it was visible in the formula wizard. As the Basic measurements are not used for creating a formula (see Basic Measurements). Create a Variable 'Total Sales' to see the amount of money that was earned on sales.

Confirmed/Done Sale Orders per Team


Specify the Basic measurement to see the Total, that a particular team earned. For that add the Extra Filter with the name of the team Sales Team > Sales Team contains 'Europe'. If you have several teams and want to see the Total result by teams you need to create a Variable for each team separately.

Confirmed/Done Sale Orders per salesperson


You can also see the result per each salesperson, to stimulate employees to sell more and get some benefits. For that add the Extra Filter with the person's ID Salesperson > ID = 9. 

3. Basic Measurement - Customer Invoices Count

Posted Customer Invoices


Specify the invoices by their status. To count all the posted invoices add the Extra Filter Status = Posted. 

Cancelled Customer Invoices


Track the number of cancelled invoices, to take timely measures and find out what is the problem, if too many were cancelled. Add the Extra Filter Status = Cancelled.

Customer Invoices with Total > 100 $


Find out how many invoices with the high Total amount were created. For that add the Extra Filter Total > 100.

4. Basic Measurement - Purchase Order Total

Purchase Order Total


Even if there is no need to specify the Basic measurement, match it to a Variable, so it was visible in the formula wizard. As the Basic measurements are not used for creating a formula (see Basic Measurements). Create a Variable 'Purchase Order Total' to see the amount of money that was spent on products.

Purchase Order Total for Orders in US Dollars


If you have vendors from various countries and pay them in different currency, you can add, for example, the Extra Filter 'Currency contains US'. This way only the purchases in US dollars will be taken into consideration. 

Simultaneously, it is also possible to convert all currencies to the default company one to see the result in it. In this case, to calculate the purchase total regardless the currency, you can set another Basic measurement and Variable. 

To that end edit the Basic measurement or create a new one and change the Model to 'Purchase Report'. This kind of Model and similar ones (like Sale Report, etc.) are insensitive to the currency. So, the total will be summed already in default company currency. 

For example, create a Basic measurement 'Purchase orders total in default currency', and choose the Model 'Purchase Report', add an Extra Filter by the country or  vendor is you like (e.g. Country contains America) and after the calculations the result will be shown in the default currency.


Purchase Order Total Azure Interior


Specify the Basic measurement to calculate the money spent for the products of a particular vendor. Add the Extra Filter Vendor = 'Azure Interior'

5. Basic Measurement - Working Days to Close

Project Days to Close


Connect Basic measurement to a Variable with the same name to see the number of days that the company spent to finish all the projects.

Project Days to Close Anita Oliver


Create a Variable to see the number of days that Anita Oliver needed to finish the assigned to her projects. For that, use the Extra Filter with the workers ID 'Assigned To > ID = 9'.

Project Days to Close Software Continuous Development


Create a Variable to see the number of days that the company spent to finish the particular project. For that, use the Extra Filter with the Project's title 'Project > Name = 'Software Continuous Development'.

6. Basic Measurement - Products in Stock

Products Quantity in WH/Stock


Specify the Basic measurement to count stocks of the products, that have incoming inventories to a particular warehouse in a specified period. For that add the Extra Filter with the location title Location contains WH/Stock.

Expensive Products Stocks


Count incoming inventories of only expensive products in your shop. For example, those that price is more than 100 $. For that add the Extra Filter Product > Sales Price > 100.

Large Cabinet Incoming Stocks


Calculate incoming inventory of specific product or products. Add the Extra Filter with the product's name, for example Product contains Large Cabinet.

7. Basic Measurement - Average Duration of an Appointment (for the module Universal Appointments)

Average Duration of an Appointment in English


If you hold various appointments in different languages that vary in time, you can filter them by the language and calculate the average time of an appointment. The language of the appointment is decided based on the language of the appointment's partner. Add the Extra Filter Language = English.

Average Duration of Appointments 'Car Rent Class C'


Calculate the average time for an appointment for a particular service. To see for which service customers book more time. Add the Extra Filter with the name of your service Service = Car Rent Class C.

Average Duration of Anita Oliver's Appointments


Track for which of your employees customers book more time. Add the Extra Filter with the responsible for the appointment person Responsible = Anita Oliver.

8. Basic Measurement - The Total Number of Likes in an Article (for the module KnowSystem)

The Total Number of Likes of Published Articles


Track the number of likes, for the articles, which are published. This way you will be able to track likes for only those articles, which can be liked by both internal users and portal users. Add the Extra Filter Is Published is set.

The Total Number of Likes for Articles with the Tag 'Odoo'

 

See the total number of likes for the articles with a particular tag. You can later compare, articles with what tag gets more likes and therefore is more popular among users. Add the Extra Filter with any of your tags, for example Tags > ID = 3. You can find out the required tags's ID as you open the tag from the tag's menu, in the address line 'odootools.com/web#id=3...'.

The Total Number of Likes for Articles with less than 5 Dislikes


You might want to consider the number of dislikes to an article, while counting the total number of likes. Add the Extra Filter Dislikes Number < 5. With this Filter, only the articles that have less  or equal 4 dislikes will be considered for calculations.



KPI Periods


KPI Scorecard assumes that you might not only have an overview of actual figures but you can also compare those to real targets. However, goals should be time-constrained (for example, 'Sell as much as Possible' is not a goal, while 'Generate 100,000 Euro Revenue in the year 2024' is a good target for a salesperson). That is why KPI Periods are introduced.

A KPI Period is a time frame for which companies set their targets to control performance (in a similar way as financial performance is controlled within accounting/fiscal periods).

The app allows setting periods of any length including intervals that intersect each other (and even the Past periods). For example, you can create some ordinary periods by years, quarters, months, weeks, and days like 'The Year 2024', '1st Quarter of 2024', '2nd Quarter of 2024', 'September 2024' etc. Or make unusual periods  - 'September 1st to 17th' and 'September 7th to 30th'. 

When periods cross each other like in 'The Year 2024' and '1st Quarter of 2024', the objects that were created during the crossing time are used for calculations in both periods. For example, we had  100 sales in 2024, and 20 of them related to the first quarter of the year.

There are two ways of creating a period: through the separate menu or right from the KPI Scorecard interface.

To create the period from the KPI Scorecard Interface:

1. Click on the button 'New'

2. Write the title of the period

3. Choose dates

4. Optionally choose the period to copy the KPI Targets from (to avoid the double work and not to create them again)

5. If you have more than one company, choose the one for which you create the period (in multi-company mode: it cannot be global, should be created for each company separately)


To create a period from the separate menu:

1. Go to the tab 'Periods'

2. Click 'New'

3. Type the period's name

4. Choose the start and end date

5. In multi-company mode choose the company

6. Optionally add some KPI Targets right from here


The chosen dates will be used to calculate the KPI actual value. For example, a KPI formula might include a basic KPI measurement for the total amount of sale orders, while the date field of this measurement is defined as 'Order date'. Then, only sale orders, whose order date is within the period, would be taken into account. Thus, the KPI Scorecard would show the total revenue for a given period. This way the KPI may be used for any period and as many times as you need. As the dates will be taken from the period, where the KPI Target (based on the KPI) is set.

To compare results for certain periods and see them in a graph, it is recommended to have a more or less strict logic of periods. Usually, KPI targets are set for a whole year and quarterly/monthly intervals. It lets us not only have a KPI overview but also check historical trends.

The app automatically considers various periods that might be compared and shows users a chart of actual values by a specific KPI. To consider periods similar, they should have the same number of days adjusted for a history tolerance. 

On the KPI single view interface, сlick on the 'History' button, to see the automatically created graph of the KPI Target for various periods. Below the graph, there is a table, which shows the chosen KPI Target for all the periods, regardless of the number of days in them. Also, you can analyze tendencies by periods on the special 'KPI trends' interface (see KPI History and Trends).


When the end date is already in the Past, it is preferable to close the period to avoid further updates of KPI targets' actual values due to further corrections (it is not a good idea to update December KPIs in the next August even though a sale total needs to be corrected, for example). This action is pretty much the same as when an accountant finishes a fiscal year.

Close periods that have already passed, to avoid further recalculations and lock the values. You can always re-open a period if you closed it by mistake or want to revise something. There are 2 ways to close and re-open a period: 

1. From the KPI Scorecard Interface, in the left navigation panel

2. In the tab 'Periods', by choosing a period and clicking 'Close Period'/ 'Re-Open Period'


KPI Periods let you also copy targets from existing periods (so, use them as a template). To that end just push the button 'Substitute targets' and select a period with proper KPI Targets. After that the list with the KPI Target from the chosen period will be created for the current period as well, The KPI formula and KPI Target will remain the same, but calculations will take place already for the current period.  

For example, you have 3 KPI Targets (Total Sales - 10000$; Sale Orders Count - 100; Europe Sales Share - 60%) for the first quarter of 2024 - period 'Q1 of 2024'. You create the period, that represents the second quarter of 2024 - 'Q2 of 2024'. As you open the period, you see that it is empty and you need to set KPI Targets. Then, instead of creating each one again for the second quarter, you can substitute targets. Then, the list of KPIs is copied to the current period, and in both periods you see the same list of KPI Targets (Total Sales - 10000$; Sale Orders Count - 100; Europe Sales Share - 60%).

It significantly saves time, since KPI targets usually remain similar for periods of the same length. After that action, you would be still able to change the KPI Target of the current period and calculate the Actual Value for the donor period (of course until you close the period).

To substitute targets:

1. Open the new period in the left navigation panel, to which you want to copy the KPI Targets

2. Choose the period from which you want to copy KPI Targets

3. Click 'Substitute Targets'

4. All KPI Target from the chosen period will be copied to the new period

5. Delete the ones you don't need anymore, by clicking on a cross on the KPI card.




KPI (KPI Formulas)


KPI or KPI formula is an instruction on how to get the required data from Odoo for further calculations. That determines how to count the 'Actual Value' in the KPI Target card. This is the third and final level of the way to get the data from Odoo.

There are the following levels of getting the data from Odoo:

1. Basic Measurements (the core configuration object used for retrieving actual KPI values from Odoo data)

2. Constants (the value that cannot be extracted from Odoo, but you need it for calculations) and Variables (the connected, or specified basic measurements that are required to make a formula)

3. KPI (the formula/instruction for Odoo which defines how to calculate figures based on existing Odoo data and settings)

KPI formulas might combine any number of variables, constants, and other KPIs with mathematical operators. Basic Measurements cannot be used to build a KPI.

The drag-and-drop formula for KPI construction is as simple as it is to write down a mathematical expression: just drag and drop the parts in the right order with the correct operators. Odoo would automatically retrieve data from a database according to a defined parts order for a specified period.

Creating a KPI

To create a KPI formula:

1. Go to the tab KPIs

2. Click 'New'

3. Drag&Drop Operators, Measurements, Other KPI, and Constants to create a formula (see The Interface of the Formula Wizard)

4. Below the Formula wizard, choose the category of the KPI (see KPI Categories)

5. Choose a parent KPI (see KPI Scorecard Interface)

6. Optionally, if you turned on 'KPI Tags' in configuration, assign one or several tags to the KPI (see KPI Tags)

7. Choose a company of the KPI (see Access Rights)

8. Apply the success criteria (The more the better, The less the better) (see KPI Settings)

9. Choose the result type (see KPI Settings)

10. Optionally add result prefix and/or suffix (see KPI Settings)

11. Choose how to round decimals (see KPI Settings)

12. In the tab 'Extra Targets Security' set the access rights for the current KPI formula (see Access Rights) 

13. Optionally, add some notes in the tab 'Notes'.


There is a way to see all created KPIs one by one to see their formulas or check the settings. To switch between KPIs quickly:

1. Open any KPI in the tab KPIs

2. Move between KPIs with the help of the back-and-forth arrows


The Interface of the Formula Wizard

The Formula Wizard is the central configuration object, which introduces the tool to construct mathematical expressions in a user-friendly manner through drag and drop. With the help of the convenient interface, you can easily create KPIs and configure them (see KPI Settings).

The interface is divided into two parts: the left part with elements for the formula and the right part, where you create the KPI.

In the left part of the interface you see the following elements, which can be used to create a KPI:

1. Various operators 

2. KPI Variables (including the default Variables 'Period Days' and 'Days Passed', that are required for introducing a time frame into the formula) in the tab Measurements (see Measurements (Variables))

3. Other KPIs (the previously created formulas)

4. KPI constants  (see Constants)

The section Other KPIs contains previously created formulas, that you can use for creating even more complicated ones. For example, 'Opportunity to sales success ratio' based on KPIs 'Sales count' and 'Opportunities Count')

The formula might be as complex as you require. The available operators are:

1. Subtraction (-)

2. Addition (+)

3. Multiplication (*)

4. Division (/)

5. Opening and closing brackets

6. Exponent (**)

7. Custom float number (write any number in the box to use it in your formula)

Make sure the operators comply with basic Math rules.


To create a KPI, move elements from the left side of the interface to the right side by Drag&Drop. When elements get to the right side, they change their color according to their type:

1. Operators become red

2. Measurements become green

3. Other KPIs become blue

4. Constants become grey

This way, it is easier to distinguish them in the formula. 

In case, there are some critical mistakes in the formula, a warning above it will be shown.


KPI Settings

After creating a formula by Drag&Drop, it is necessary to finish the setup by configuring its settings. The tab 'Settings' is located below the formula wizard.

There you can set:

1. Category (see KPI Categories)

2. Parent KPI (see KPI Scorecard Interface)

3. Tags, if the feature 'KPI Tags' is enabled in configuration (see KPI Tags)

4. Company (if you work in a multi-company environment)

5. Sequence (see KPI Scorecard Interface)

6. Success criteria

7. Result type

8. Result Prefix

9. Result Suffix

10. Currency (for the monetary result type)

11. Rounding decimals


In order, to track the result in the column 'Actual Value' in the KPI Scorecard Interface, which is marked by the color (see KPI Scorecard Interface) you need to choose the success criterion. There are two available success criteria: 'The more the better' and 'The less the better'. 

For example, use the criterion 'The more the better', in KPI 'Total sales' or 'The number of sales for 2024'.

For example, use the criterion 'The less the better', in KPI 'Canceled orders' or 'Lost Opportunities'.

Simultaneously, you can choose the result type of the KPI. There are three options: number, percentage, and monetary. Depending on the result types there are some changes in the fields.

To the number and percentage result types, you can add a prefix and suffix to make the results look good. 'Prefix' - is a word or a sign, that will be displayed before the result. 'Suffix' - is a word or a sign, that will be displayed after the result. By default, the percentage result type has the suffix %, which can be changed.

The monetary result type doesn't have fields 'Prefix' and 'Suffix', but it adds the field 'Currency', where one of the used currencies can be chosen.

The module KPI itself doesn't convert currency, so, for the correct calculations, all company transactions should be in one currency. Optionally, you can use the model 'Sales Analysis reports', when you create a basic variable. Then the currencies will be analyzed and calculated into one, which is the default for the company.


Sometimes in some formulas, the result may have a reminder, for example after division. To make the result look better, define rounding rules from 0 to 4 decimal points (1 > 1.2 > 1.23 > 1.235 > 1.2346). After that, only up to 4 numbers after the dot will be shown.


KPI Examples

Here you can find some useful examples, based on our previously created Variables. We can distinguish several kinds of formulas:

1. KPIs, consisting of one Variable. This kind of KPI doesn't require any other operators. The whole formula is one Variable. To create such KPI, you need to simply drag and drop the required Variable to the right side of the interface.

All Variables from the list of examples can be used for creating such KPIs. Just create the corresponding KPI to be able to set a KPI Target.


2. KPIs, consisting of 2 or more Variables. This kind of KPI represents a complex formula, where you add several Variables and some operators.

Here are some examples with previously created Variables:

Won Opportunities / Opportunities Count


Use this KPI to see the percent of won opportunities. The number of opportunities on the stage 'Won' is compared with the total number of opportunities.

For example, you have 5 won opportunities and 10 opportunities in total. The set KPI Target was to have at least 70% of the won opportunities. Thus, the result is negative, as there is only 50% of the won ones.

Keep in mind, that to count the result in percent you need to choose the Result Type 'Percentage'. As for the success criteria, in this case, it should be 'The more the better' as we want to won opportunities to prevail.

Total Sales Europe / Total Sales


Use this KPI to see the percent of sales of one of your teams, for example Europe. The total earned by the team Europe is compared with the total earned by the whole company.

For example, the team Europe earned 100$, while the total sales were 1000$. As we have 20 teams, the KPI Target was to earn 5% from the total sales. The team showed a great result and doubled the target. Whether that was the success of the team Europe, or failure of the other teams considers further investigations.

Keep in mind, that to count the result in percent you need to choose the Result Type 'Percentage'. The Success Criteria can be 'The more the better', as the team should show the good results.


Use this KPI to see the amount of money earned per employee. The total earned by the company is compared with the number of employees per company, which was created as a constant.

For example, total sales were 1000$. We have 20 employees, the KPI Target was to earn 40$ per worker. The result is 50$, so the target is reached. 

The number of employees might be different for various periods of time. The corresponding configurations, can be made while creating the constant. The constant will be chosen considering the period for which the KPI Target is set (see Constants).

The Result Type for receiving the value in money should be 'Number'. The Success Criteria can be 'The more the better', as the team should show the good results.

Total Sales / Sales Count


Use this KPI to see average amount of money earned per order. The total earned by the company is compared with the number of sale orders.

For example, total sales were 1000$ and we had 50 sale orders, the KPI Target was to have the average receipt for 50$. The result is 50$, so the target is reached. 

The Result Type for receiving the value in money should be 'Monetary'. The Success Criteria should be 'The more the better', as the we people to buy more at a time.

Total Sales Anita Oliver / Project Days to Close Anita Oliver


Use this KPI to see the amount of money Anita Oliver earned per day. The amount of money that Anita Oliver have earned is compared with the number of days, that Anita Oliver needed to close all her projects.

For example, Anita Oliver had 5 projects per 20 working days. In total she earned a 1000$, so the amount of money, that she have earned per day is 50$. The KPI Target is to earn 60$ per day, so the result is negative and Anita should work faster.

The Result Type for receiving the value in money should be 'Monetary'. The Success Criteria can be 'The more the better', as we want Anita Oliver to earn more money.