{"id":45018,"date":"2026-06-09T20:09:44","date_gmt":"2026-06-09T18:09:44","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=45018"},"modified":"2026-06-09T20:09:46","modified_gmt":"2026-06-09T18:09:46","slug":"m-files-bd-scalar-widgets-kpinumber-and-gauge","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/","title":{"rendered":"M-Files BD &#8211; Scalar widgets: kpiNumber and gauge"},"content":{"rendered":"\n<p>This is the first widget-specific post of the series. As a reminder, the previous post mapped the <a href=\"https:\/\/www.dbi-services.com\/blog\/m-files-bd-anatomy-of-a-dashboard-definition\/\" target=\"_blank\" rel=\"noreferrer noopener\">anatomy of a dashboard definition<\/a>. From here on, I go widget by widget. I have grouped the seven widget types into three families:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scalar widgets<\/strong>: <strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong> both display a single value (a count, a sum, a date) over the matching object set. This is what the current post covers.<\/li>\n\n\n\n<li><strong>Trend widgets<\/strong>: <strong><em>line<\/em><\/strong> and <strong><em>area<\/em><\/strong>, which are very similar both in form and in configuration, will be the next post, 4b.<\/li>\n\n\n\n<li><strong>Distribution and tabular widgets<\/strong>: <strong><em>donut<\/em><\/strong>, <strong><em>bar<\/em><\/strong>, <strong><em>table<\/em><\/strong>, which are all remaining supported widgets (as of now), c.f. Post 4c later.<\/li>\n<\/ul>\n\n\n\n<p>The reason <strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong> sit together is that they accept exactly the same aggregation type (<strong><em>summary<\/em><\/strong>) and they share the same reducer model. So once you understand one, the other is mostly a different visual.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-1-the-summary-aggregation-in-one-paragraph\">1. The summary aggregation in one paragraph<\/h2>\n\n\n\n<p>A full post will be dedicated to aggregations (Post 6 in the series), but to make this one self-contained: the <strong><em>summary<\/em><\/strong> aggregation returns a single value over all the matching objects. By default, it counts all matching objects. Its initial name was actually &#8220;count&#8221;, but later I wanted to introduce mathematical capabilities (c.f. the next sentence) so I had to change the name. With a <strong><em>reducer<\/em><\/strong> of <strong><em>sum<\/em><\/strong>, <strong><em>avg<\/em><\/strong>, <strong><em>median<\/em><\/strong>, <strong><em>min<\/em><\/strong>, or <strong><em>max<\/em><\/strong> (instead of the default <strong><em>count<\/em><\/strong>), it reduces a property&#8217;s values across the matching set instead.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ Total count of matching objects\n&quot;aggregation&quot;: {\n  &quot;type&quot;: &quot;summary&quot;\n}\n\n\/\/ Sum of an &quot;amount&quot; property for all matching objects\n&quot;aggregation&quot;: {\n  &quot;type&quot;: &quot;summary&quot;,\n  &quot;reducer&quot;: &quot;sum&quot;,\n  &quot;reducerProperty&quot;: &quot;Amount&quot;\n}\n\n\/\/ Latest contract expiry date among all matching objects\n&quot;aggregation&quot;: {\n  &quot;type&quot;: &quot;summary&quot;,\n  &quot;reducer&quot;: &quot;max&quot;,\n  &quot;reducerProperty&quot;: &quot;Effective through&quot;\n}\n<\/pre><\/div>\n\n\n<p>Both <strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong> accept this aggregation and only this one. The validator&#8217;s compatibility matrix is strict on that point. If you ever try to put a <strong><em>groupByProperty<\/em><\/strong> (or something else) on a KPI tile, you will not be able to save your dashboard.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-kpinumber-the-big-number-tile\">2. kpiNumber &#8211; the big number tile<\/h2>\n\n\n\n<p>The <strong><em>kpiNumber<\/em><\/strong> is the simplest widget in the catalog. It shows a large number, with an optional small unit label below.<\/p>\n\n\n\n<p>Minimal example:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n  &quot;id&quot;: &quot;&quot;,\n  &quot;title&quot;: &quot;All Contracts&quot;,\n  &quot;type&quot;: &quot;kpiNumber&quot;,\n  &quot;gridColumnSpan&quot;: 3,\n  &quot;gridRowSpan&quot;: 1,\n  &quot;query&quot;: {\n    &quot;objectType&quot;: &quot;Document&quot;,\n    &quot;class&quot;: &quot;Contract or Agreement&quot;,\n    &quot;aggregation&quot;: { &quot;type&quot;: &quot;summary&quot; }\n  },\n  &quot;display&quot;: { &quot;unit&quot;: &quot;contracts&quot; }\n}\n<\/pre><\/div>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2884bfd65dd&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2884bfd65dd\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1726\" height=\"240\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png\" alt=\"M-Files Busisiness Dashboard kpiNumber\" class=\"wp-image-45019\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png 1726w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2-300x42.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2-1024x142.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2-768x107.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2-1536x214.png 1536w\" sizes=\"auto, (max-width: 1726px) 100vw, 1726px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-1-display-unit\">2.1. display.unit<\/h3>\n\n\n\n<p>A small text label shown below the number (c.f. above screenshot), indicating the natural unit of the value: <strong><em>&#8220;contracts&#8221;<\/em><\/strong>, <strong><em>&#8220;invoices&#8221;<\/em><\/strong>, <strong><em>&#8220;CHF&#8221;<\/em><\/strong>, <strong><em>&#8220;open items&#8221;<\/em><\/strong> etc&#8230; This is purely optional, so you can omit it if the title is already self-explanatory.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-2-display-decimals\">2.2. display.decimals<\/h3>\n\n\n\n<p>Number of decimal to use for the widget (default <strong><em>0<\/em><\/strong>). This is useful when the reducer isn&#8217;t the default <strong><em>count<\/em><\/strong>, since a count of object is mandatorily an integer. For example:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&quot;display&quot;: { &quot;unit&quot;: &quot;CHF&quot;, &quot;decimals&quot;: 2 }\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-3-display-thresholds\">2.3. display.thresholds<\/h3>\n\n\n\n<p>This one is where the KPI tile becomes really useful in management dashboards. The <strong><em>thresholds<\/em><\/strong> array colors the number based on the current value. You can either use texts representing colors or the HTML color code:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&quot;display&quot;: {\n  &quot;unit&quot;: &quot;Overdue Invoices&quot;,\n  &quot;thresholds&quot;: &#x5B;\n    { &quot;value&quot;: 0,  &quot;color&quot;: &quot;green&quot;   },\n    { &quot;value&quot;: 1, &quot;color&quot;: &quot;orange&quot;  },\n    { &quot;value&quot;: 10, &quot;color&quot;: &quot;red&quot; }\n  ]\n}\n<\/pre><\/div>\n\n\n<p>The engine applies the color of the highest threshold where <strong><em>currentValue &gt;= threshold.value<\/em><\/strong>. So in the example above:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0 overdue invoices: green<\/li>\n\n\n\n<li>1 to 9: orange<\/li>\n\n\n\n<li>10 and above: red<\/li>\n\n\n\n<li>Below 0 (which would be unusual for a count, but possible for a sum on a money property): falls back to brand blue (<strong><em>#006eef<\/em><\/strong>) with the above example. But nothing prevents you to set a threshold on negative values.<\/li>\n<\/ul>\n\n\n\n<p>Please note that thresholds apply only to numeric values. When the KPI shows a date (e.g. <strong><em>max<\/em><\/strong> on a date property), thresholds are ignored and the brand color stays. That&#8217;s the current behavior, and it might change if there is a need that calls for it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-4-reducer-types-on-kpinumber\">2.4. Reducer types on kpiNumber<\/h3>\n\n\n\n<p>All six reducers are supported, with the standard property-type rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>count<\/em><\/strong> <em>(default)<\/em>: count the number of objects and you do not need to specify the <strong><em>reducerProperty<\/em><\/strong> in this case, since it&#8217;s taken by default.<\/li>\n\n\n\n<li><strong><em>sum<\/em><\/strong>, <strong><em>avg<\/em><\/strong>, <strong><em>median<\/em><\/strong>: numeric properties only.<\/li>\n\n\n\n<li><strong><em>min<\/em><\/strong>, <strong><em>max<\/em><\/strong>: numeric properties <strong>or<\/strong> date \/ timestamp properties.<\/li>\n<\/ul>\n\n\n\n<p>A few real-world combinations:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n\/\/ Count\n{ &quot;type&quot;: &quot;summary&quot; }\n\n\/\/ Total revenue\n{ &quot;type&quot;: &quot;summary&quot;, &quot;reducer&quot;: &quot;sum&quot;, &quot;reducerProperty&quot;: &quot;Amount&quot; }\n\n\/\/ Average duration\n{ &quot;type&quot;: &quot;summary&quot;, &quot;reducer&quot;: &quot;avg&quot;, &quot;reducerProperty&quot;: &quot;Project duration days&quot; }\n\n\/\/ Latest contract expiry\n{ &quot;type&quot;: &quot;summary&quot;, &quot;reducer&quot;: &quot;max&quot;, &quot;reducerProperty&quot;: &quot;Effective through&quot; }\n\n\/\/ Oldest open invoice\n{ &quot;type&quot;: &quot;summary&quot;, &quot;reducer&quot;: &quot;min&quot;, &quot;reducerProperty&quot;: &quot;Invoice date&quot; }\n<\/pre><\/div>\n\n\n<p>The last two return ISO date strings internally, which is then displayed on the end-user side as <strong><em>DD\/MM\/YYYY<\/em><\/strong>, currently. So, in M-Files Sample Vault you can build a KPI like &#8220;Latest contract expiry: 31\/12\/2026&#8221; with three lines of JSON.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-5-drill-through-on-kpinumber\">2.5. Drill-through on kpiNumber<\/h3>\n\n\n\n<p>When <strong><em>drillThroughEnabled<\/em><\/strong> is <strong><em>&#8220;Yes&#8221;<\/em><\/strong> at the dashboard level, the entire KPI tile is clickable. A click opens the drill-through modal with all the objects that contributed to the value. This is useful for all types of reducers, to get more details on how the dashboard reached that value.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-gauge-the-dial\">3. gauge &#8211; the dial<\/h2>\n\n\n\n<p>The <strong><em>gauge<\/em><\/strong> is also driven by a <strong><em>summary<\/em><\/strong> aggregation, but it shows the value on a dial against a defined range. It comes in two flavors depending on the property selected for the reducer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-1-numeric-mode\">3.1. Numeric mode<\/h3>\n\n\n\n<p>This is the default mode and it can be used with any reducer: <strong><em>count<\/em><\/strong>, <strong><em>sum<\/em><\/strong>, <strong><em>avg<\/em><\/strong>, <strong><em>median<\/em><\/strong>, or <strong><em>min<\/em><\/strong> \/ <strong><em>max<\/em><\/strong> on a numeric property. The scale is in the natural units of the value, with <strong><em>display.min<\/em><\/strong> and <strong><em>display.max<\/em><\/strong> bracketing the dial.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n  &quot;id&quot;: &quot;&quot;,\n  &quot;title&quot;: &quot;Overdue Invoices&quot;,\n  &quot;type&quot;: &quot;gauge&quot;,\n  &quot;gridColumnSpan&quot;: 6,\n  &quot;gridRowSpan&quot;: 2,\n  &quot;display&quot;: { &quot;min&quot;: 0, &quot;max&quot;: 50, &quot;unit&quot;: &quot;invoices&quot; },\n  &quot;query&quot;: {\n    &quot;objectType&quot;: &quot;Document&quot;,\n    &quot;class&quot;: &quot;Purchase Invoice&quot;,\n    &quot;filters&quot;: &#x5B;\n      { &quot;property&quot;: &quot;Deadline&quot;, &quot;operator&quot;: &quot;lessThan&quot;,\n        &quot;value&quot;: &quot;@today&quot;, &quot;valueType&quot;: &quot;dateToken&quot; }\n    ],\n    &quot;aggregation&quot;: { &quot;type&quot;: &quot;summary&quot; }\n  }\n}\n<\/pre><\/div>\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2884bfd76dd&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2884bfd76dd\" class=\"wp-block-image size-medium wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"210\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.1-1-300x210.png\" alt=\"\" class=\"wp-image-45024\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.1-1-300x210.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.1-1.png 676w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-2-display-thresholds-on-a-gauge\">3.2. display.thresholds on a gauge<\/h3>\n\n\n\n<p>Same shape as the <strong><em>kpiNumber<\/em><\/strong>, but the gauge applies the colors to both the <strong>pointer<\/strong> and the <strong>arc segments<\/strong>, so the dial visually splits into zones:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n&quot;display&quot;: {\n  &quot;min&quot;: 0, &quot;max&quot;: 50, &quot;unit&quot;: &quot;invoices&quot;,\n  &quot;thresholds&quot;: &#x5B;\n    { &quot;value&quot;: 0, &quot;color&quot;: &quot;green&quot;  },\n    { &quot;value&quot;: 5, &quot;color&quot;: &quot;orange&quot;  },\n    { &quot;value&quot;: 20, &quot;color&quot;: &quot;red&quot; }\n  ]\n}\n<\/pre><\/div>\n\n\n<p>This colors the arc as: 0 to 5 in green, 5 to 20 in orange, 20 and above in red. The pointer also takes the color of the zone where the current value lands. In other words, a glance at the dial tells you whether you are in a comfortable zone, a warning zone, or a critical one (c.f. above screenshot for the example with the colors).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-3-date-mode\">3.3. Date mode<\/h3>\n\n\n\n<p>When the <strong><em>reducer<\/em><\/strong> is <strong><em>min<\/em><\/strong> or <strong><em>max<\/em><\/strong> and <strong><em>reducerProperty<\/em><\/strong> is a date \/ timestamp property, the gauge switches to <strong>date mode<\/strong> automatically. The dial then represents a day offset relative to today:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>display.min<\/em><\/strong> and <strong><em>display.max<\/em><\/strong> are expressed in <strong>day units<\/strong>, where <strong><em>0<\/em><\/strong> is today, negative values are in the past, positive values are in the future.<\/li>\n\n\n\n<li>Graduation labels show dates like <strong><em>DD MMM<\/em><\/strong> if all dates are within a 365 timeframe, or it adds the <strong><em>YY<\/em><\/strong> if it goes beyond, so you know which date exactly we are talking about.<\/li>\n\n\n\n<li>The center detail shows the actual date <strong><em>DD\/MM\/YYYY<\/em><\/strong> that comes from the reducer.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\n{\n  &quot;id&quot;: &quot;&quot;,\n  &quot;title&quot;: &quot;Closest Expiry&quot;,\n  &quot;type&quot;: &quot;gauge&quot;,\n  &quot;gridColumnSpan&quot;: 6,\n  &quot;gridRowSpan&quot;: 2,\n  &quot;display&quot;: { &quot;min&quot;: 0, &quot;max&quot;: 180, &quot;unit&quot;: &quot;next expiry&quot; },\n  &quot;query&quot;: {\n    &quot;objectType&quot;: &quot;Document&quot;,\n    &quot;class&quot;: &quot;Contract or Agreement&quot;,\n    &quot;filters&quot;: &#x5B;\n      {\n        &quot;property&quot;: &quot;Effective through&quot;,\n        &quot;operator&quot;: &quot;greaterOrEqual&quot;,\n        &quot;value&quot;: &quot;@today&quot;,\n        &quot;valueType&quot;: &quot;dateToken&quot;\n      }\n    ],\n    &quot;aggregation&quot;: {\n      &quot;type&quot;: &quot;summary&quot;,\n      &quot;reducer&quot;: &quot;min&quot;,\n      &quot;reducerProperty&quot;: &quot;Effective through&quot;\n    }\n  },\n}\n<\/pre><\/div>\n\n\n<p>In this example, the dial spans from today to 180 days in the future. If the earliest contract expiry is 22 days from today, the needle lands at the date that represents 22 and the center shows the actual date. If it is already in the past (negative offset), it indicates an overdue situation immediately. (in below screenshot, I&#8217;m using dates related to the past, as that&#8217;s what is available in the Sample Vault from M-Files, but in a real-world, the above JSON is usable)<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a2884bfd8153&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a2884bfd8153\" class=\"wp-block-image size-medium wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"211\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.3-300x211.png\" alt=\"M-Files Busisiness Dashboard gauge date-mode\" class=\"wp-image-45021\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.3-300x211.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.3.3.png 674w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-4-when-the-reducer-cannot-produce-a-numeric-value\">3.4. When the reducer cannot produce a numeric value<\/h3>\n\n\n\n<p>If you try to use a date reducer on a chart widget (<strong><em>bar<\/em><\/strong>, <strong><em>line<\/em><\/strong>, <strong><em>area<\/em><\/strong>, <strong><em>donut<\/em><\/strong>), the widget will show a grey placeholder text, explaining that it is not supported (doesn&#8217;t really make sense). Moreover, before that, the administrator that designed the dashboard also got the same warning that this isn&#8217;t something that would work.<\/p>\n\n\n\n<p>On a <strong><em>gauge<\/em><\/strong>, you have the date-mode escape hatch. On a <strong><em>kpiNumber<\/em><\/strong> or a <strong><em>table<\/em><\/strong>, the value is just formatted as a date string. So as a rule, <strong>date-valued<\/strong> reducers belong on <strong><em>kpiNumber<\/em><\/strong>, <strong><em>table<\/em><\/strong>, or <strong><em>gauge<\/em><\/strong> (date mode). They do not belong on chart widgets.<\/p>\n\n\n\n<p>As said, this rule is not arbitrary, it is what the engine actually enforces. The &#8220;Test Widget&#8221;, &#8220;Test Queries&#8221; or &#8220;Save&#8221; will all tell you the same thing in a friendly way, if you slip or forgot about it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-4-summary-of-reducers-for-scalar-widgets\">4. Summary of reducers for scalar widgets<\/h2>\n\n\n\n<p>To close this post, here is a quick reference of what works on <strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Reducer<\/th><th>What it computes<\/th><th>reducerProperty types<\/th><th>Empty set returns<\/th><\/tr><\/thead><tbody><tr><td><strong><em>count<\/em><\/strong> <em>(default)<\/em><\/td><td>Number of matching objects<\/td><td>n\/a<\/td><td><strong><em>0<\/em><\/strong><\/td><\/tr><tr><td><strong><em>sum<\/em><\/strong><\/td><td>Total of the property&#8217;s values<\/td><td>Numeric<\/td><td><strong><em>null<\/em><\/strong> (rendered as <strong><em>&#8211;<\/em><\/strong>)<\/td><\/tr><tr><td><strong><em>avg<\/em><\/strong><\/td><td>Arithmetic mean<\/td><td>Numeric<\/td><td><strong><em>null<\/em><\/strong> (rendered as <strong><em>&#8211;<\/em><\/strong>)<\/td><\/tr><tr><td><strong><em>median<\/em><\/strong><\/td><td>Middle value<\/td><td>Numeric<\/td><td><strong><em>null<\/em><\/strong> (rendered as <strong><em>&#8211;<\/em><\/strong>)<\/td><\/tr><tr><td><strong><em>min<\/em><\/strong><\/td><td>Smallest value<\/td><td>Numeric or date \/ timestamp<\/td><td><strong><em>null<\/em><\/strong> (rendered as <strong><em>&#8211;<\/em><\/strong>)<\/td><\/tr><tr><td><strong><em>max<\/em><\/strong><\/td><td>Largest value<\/td><td>Numeric or date \/ timestamp<\/td><td><strong><em>null<\/em><\/strong> (rendered as <strong><em>&#8211;<\/em><\/strong>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>As described above, there is a subtle difference of &#8220;0&#8221; vs &#8220;-&#8221; for the empty results. For the default <strong><em>count<\/em><\/strong>, we display &#8220;0&#8221;, as there was really no objects returned, so the count of them is correct. For all other reducers, if there is no results, then there is nothing to do maths on. To differentiate between &#8220;no results&#8221; and &#8220;sum is really 0&#8221; (e.g. -2+2), I decided to display &#8220;-&#8221; for cases where there is no actual data to compute.<\/p>\n\n\n\n<p>Of course, this empty results set difference is only true when there are no data returned. So if your filter is accurate and you expect some data, then it will never happen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-5-closing-thoughts\">5. Closing thoughts<\/h2>\n\n\n\n<p><strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong> are the two widgets that typically stands at the top of a dashboard. It can be in a row of four KPIs and a gauge below, or side-by-side, depending on the layout defined. They give the at-a-glance answer that motivated the whole module in the first place.<\/p>\n\n\n\n<p>In the next post (4b), I will talk about the trend widgets, <strong><em>line<\/em><\/strong> and <strong><em>area<\/em><\/strong>, which work in pairs almost as closely as <strong><em>kpiNumber<\/em><\/strong> and <strong><em>gauge<\/em><\/strong> do here.<\/p>\n\n\n\n<p>Want to know more about this Business Dashboard? <a href=\"https:\/\/www.dbi-services.com\/company\/contact\/\" target=\"_blank\" rel=\"noreferrer noopener\">Contact us<\/a> and we will be happy to showcase it on <a href=\"https:\/\/www.m-files.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">M-Files<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the first widget-specific post of the series. As a reminder, the previous post mapped the anatomy of a dashboard definition. From here on, I go widget by widget. I have grouped the seven widget types into three families: The reason kpiNumber and gauge sit together is that they accept exactly the same aggregation [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[525],"tags":[4094,4096,4095,4105,3190,4099],"type_dbi":[],"class_list":["post-45018","post","type-post","status-publish","format-standard","hentry","category-enterprise-content-management","tag-business-dashboard","tag-gauge","tag-kpi","tag-kpinumber","tag-m-files","tag-widget"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.7 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>M-Files BD - Scalar widgets: kpiNumber and gauge - dbi Blog<\/title>\n<meta name=\"description\" content=\"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"M-Files BD - Scalar widgets: kpiNumber and gauge\" \/>\n<meta property=\"og:description\" content=\"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-09T18:09:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-09T18:09:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1726\" \/>\n\t<meta property=\"og:image:height\" content=\"240\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"M-Files BD &#8211; Scalar widgets: kpiNumber and gauge\",\"datePublished\":\"2026-06-09T18:09:44+00:00\",\"dateModified\":\"2026-06-09T18:09:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/\"},\"wordCount\":1513,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/06\\\/4a.2.png\",\"keywords\":[\"Business Dashboard\",\"Gauge\",\"KPI\",\"kpiNumber\",\"M-Files\",\"widget\"],\"articleSection\":[\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/\",\"name\":\"M-Files BD - Scalar widgets: kpiNumber and gauge - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/06\\\/4a.2.png\",\"datePublished\":\"2026-06-09T18:09:44+00:00\",\"dateModified\":\"2026-06-09T18:09:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"description\":\"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/06\\\/4a.2.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2026\\\/06\\\/4a.2.png\",\"width\":1726,\"height\":240},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/m-files-bd-scalar-widgets-kpinumber-and-gauge\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"M-Files BD &#8211; Scalar widgets: kpiNumber and gauge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 15 years of experience in Digitalization &amp; Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache HTTPD\\\/Tomcat, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\\\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/morgan-patou\\\/\",\"https:\\\/\\\/x.com\\\/MorganPatou\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/morgan-patou\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"M-Files BD - Scalar widgets: kpiNumber and gauge - dbi Blog","description":"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/","og_locale":"en_US","og_type":"article","og_title":"M-Files BD - Scalar widgets: kpiNumber and gauge","og_description":"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.","og_url":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/","og_site_name":"dbi Blog","article_published_time":"2026-06-09T18:09:44+00:00","article_modified_time":"2026-06-09T18:09:46+00:00","og_image":[{"width":1726,"height":240,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png","type":"image\/png"}],"author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"M-Files BD &#8211; Scalar widgets: kpiNumber and gauge","datePublished":"2026-06-09T18:09:44+00:00","dateModified":"2026-06-09T18:09:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/"},"wordCount":1513,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png","keywords":["Business Dashboard","Gauge","KPI","kpiNumber","M-Files","widget"],"articleSection":["Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/","url":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/","name":"M-Files BD - Scalar widgets: kpiNumber and gauge - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png","datePublished":"2026-06-09T18:09:44+00:00","dateModified":"2026-06-09T18:09:46+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"description":"How to configure KPI number and gauge widgets in the M-Files Business Dashboard: thresholds, reducers, date mode and drill-through.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2026\/06\/4a.2.png","width":1726,"height":240},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/m-files-bd-scalar-widgets-kpinumber-and-gauge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"M-Files BD &#8211; Scalar widgets: kpiNumber and gauge"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 15 years of experience in Digitalization &amp; Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache HTTPD\/Tomcat, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=45018"}],"version-history":[{"count":3,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45018\/revisions"}],"predecessor-version":[{"id":45025,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/45018\/revisions\/45025"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=45018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=45018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=45018"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=45018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}