Tessallite Excel Add-in
What This Covers
The Tessallite Excel add-in brings the semantic layer directly into Excel as a task pane. You build reports by dragging governed measures and dimensions, ask the conversational agent questions, insert values, charts, and PivotTables, drill through to detail rows, and switch personas without leaving the workbook. Every number comes from the same deployed model that powers the web app, so the figures match exactly.
When To Use The Add-in
Excel can also connect to Tessallite as a native PivotTable over XMLA (see Excel PivotTable Features). Use whichever fits the task:
- Add-in - guided report building, the conversational agent inside Excel, persona switching, connectionless value functions, local PivotTables, and one-click insert of answers, tables, and charts. Best for analysts who want help assembling a report without creating a workbook data connection.
- Native XMLA PivotTable - the familiar PivotTable field list with slicers, Show Values As, and timelines. Best when you already think in PivotTables.
Both read the same governed models and honour the same row security and persona rules.
Install The Add-in
The add-in is an Office.js task pane served over HTTPS. Office refuses to load task panes over plain HTTP, so the add-in must be reached over https:// with a certificate Excel trusts.
- Obtain the add-in manifest (
manifest.xml) from your administrator. It points at your Tessallite deployment's add-in host (port3443in local installs). - In Excel, go to Insert > Get Add-ins > My Add-ins > Upload My Add-in, and select the
manifest.xmlfile. On Excel for the web, use Insert > Office Add-ins > Upload My Add-in. - Open the add-in from the Home tab. The Tessallite task pane appears on the right.
- Sign in with your tenant slug, email, and password. These are the same credentials you use for the web app.
Install From A Trusted Shared-folder Catalogue
For local development or an internal pilot, your administrator may give you a shared-folder catalogue URL instead of asking you to upload a manifest file manually. The catalogue folder contains the add-in manifest. Excel must trust that folder before it can show the add-in.
- Copy the shared-folder URL from your administrator.
- In Excel, open File > Options > Trust Center.
- Click Trust Center Settings.
- Open Trusted Add-in Catalogs.
- Paste the shared-folder URL into Catalog URL.
- Click Add catalog.
- Tick Show in Menu for the catalogue.
- Click OK, then close and restart Excel.
- Open the blue Add-ins button, open Shared Folder, refresh, and add the Tessallite add-in.
Report Builder
Report Builder assembles a query from governed objects and writes the result to the sheet.
- Pick a model. The measure, dimension, and hierarchy libraries populate with the objects you are allowed to see.
- Drag objects into the Rows, Columns, Values, and Filters zones, or start from a layout in the template picker.
- Click Run. The result range is written to the active sheet with friendly display names as headers.
Because the add-in queries the deployed model, aggregate routing, calculated measures, and time variants all apply automatically. Member-list requests use that same deployed definition and never fall back to draft metadata. If discovery fails because the deployed definition is unavailable, the failure is retained in query history as snapshot_unavailable so an operator can distinguish deployment repair from an invalid dimension request.
Connectionless Values And Local PivotTables
The normal add-in insert path does not require a workbook-level OLAP connection named Tessallite.
- Clicking the measure value insert action writes a
TESSALLITE.VALUEcustom function, for example=TESSALLITE.VALUE("inventory","shipping_cost"). The function uses the same sign-in session and selected model as the task pane. - Single-cell KPI value and status inserts write
TESSALLITE.KPI, for example=TESSALLITE.KPI("inventory","Shipping Cost","status"). - Local PivotTable inserts run the Report Builder query through Tessallite, write a flat grouped result into a hidden backing sheet, create a namespaced
_tsl_data_*Excel Table, and build a native Excel PivotTable over that table using the Rows, Columns, Filters, and Values zones. - Local PivotTable inserts only accept additive standard measures. Use Insert Table or the advanced CUBE formula path for calculated, variant, semi-additive, or non-additive measures so Excel does not re-aggregate a value that must stay at its governed grain.
If a workbook is opened while a different model is selected in the task pane, the TESSALLITE.* functions fail with a clear model-mismatch message instead of returning a number from the wrong model. Select the model named in the formula and refresh values.
Hidden PivotTable backing sheets are still workbook data. Anyone with workbook edit access can unhide them, so do not share a workbook with people who should not see the data behind the pivot.
Filtering Inside Report Builder
An object in the Filters zone starts as a plain equals match. Click the filter chip to choose an operator such as Equals, Contains, Greater Than, Less Than, or Date Range. If the model rejects a filter, the add-in shows the reason in plain words.
Using A Named List In A Zone
A saved named list can be dragged into a zone as a snapshot, or inserted as formulas when you need a live CUBESET. Prefer formulas for large or dynamic lists. See Named-list MDX composition for how the formulas are built.
KPIs Tab
The KPIs tab shows all KPIs defined in the active model, evaluated live with their current value, status, and trend direction. Single-cell KPI value and status inserts in Report Builder use TESSALLITE.KPI by default. Multi-cell KPI layouts and named-list formula inserts may still use the advanced CUBE path when they deliberately need workbook OLAP formulas.
You Always See The Published Model
The add-in shows you the published version of the model — the version someone deployed on purpose. It never shows work that is still in progress.
This matters most when a modeller is halfway through changing something. Imagine a colleague is rewriting the "Top 10 Customers" list and has it down to three names while they experiment. Nothing in your workbook changes. You keep seeing the ten names from the published version, because a half-finished edit is not a decision anyone has made yet. When they finish and deploy, your next refresh picks up the new list.
The same rule covers KPI names, descriptions, and definitions, and it applies everywhere the add-in reads: the KPIs tab, the named lists in the Report Builder, and the TESSALLITE.* formulas in your cells. It is the same rule Power BI, Tableau, and any SQL tool already follow, which is why the same number matches across all of them.
If you are the modeller, your own drafts will not appear in Excel either. That is deliberate — the add-in is where people consume the model, not where you build it. To check work in progress, use the model builder in the Tessallite web app, which shows live drafts. When the change is ready for everyone, Save and then Deploy the model; it appears in Excel on the next refresh.
There is a practical reason beyond tidiness. A formula for something unpublished cannot return a number anyway: the gateway that resolves it also serves the published version only, so a draft KPI offered in the pane would insert a formula that shows #N/A forever.
If you see "the published version of this model is unavailable"
This message means the add-in could not read the model's published version — not that your connection is down. The add-in stops rather than showing you unpublished figures, because a number nobody approved is worse than no number. Ask a modeller to deploy the model again in the web app, then refresh the pane.
Ask Tessallite
The Ask Tessallite panel is the conversational agent inside Excel. The agent honours the model's glossary, row security, and the persona you have selected.
CUBE Formula Wizard
The CUBE formula wizard is the advanced OLAP path. It generates live-connection cube formulas, such as CUBEVALUE and CUBEMEMBER, for a measure sliced by chosen dimension members. These formulas require the workbook to have an Analysis Services connection named Tessallite. Use this mode when you deliberately want Excel's native XMLA engine. For normal add-in inserts, use the connectionless value and local PivotTable paths.
Drill-through
Select a result cell and open the Drill-through panel to see the contributing fact rows. Drill-through respects row security and persona scope.
Persona Switcher
The persona switcher sets the active persona for everything the add-in does. Selecting a persona applies that audience's allowed measures and dimensions, default filters, and row-level security.
Custom Excel Functions
The add-in registers connectionless worksheet functions under the single TESSALLITE namespace. These functions use the add-in sign-in session, so the task pane must be signed in and a model selected before custom functions will work. Existing workbooks that use the retired short namespace must be updated to TESSALLITE.*; the add-in does not publish a second namespace.
TESSALLITE.VALUE
=TESSALLITE.VALUE("model_slug", "measure_name")
=TESSALLITE.VALUE("model_slug", "measure_name", "region_code", "EU")
Returns a governed measure value, optionally filtered by dimension member values. Calls are batched for recalculation, so a sheet with many value cells does not send one request per cell.
TESSALLITE.KPI
=TESSALLITE.KPI("model_slug", "kpi_name", "value")
=TESSALLITE.KPI("model_slug", "kpi_name", "goal")
=TESSALLITE.KPI("model_slug", "kpi_name", "status")
Returns one KPI property. Status returns 1, 0, or -1, so Excel icon-set formatting can use it.
TESSALLITE.MEMBERVALUE
=TESSALLITE.MEMBERVALUE("model_slug", "measure_name", "dimension_name", "member_value")
Returns one measure for one dimension member.
TESSALLITE.LISTBYID and KPI ID functions
The published ID-based functions use the same namespace: TESSALLITE.LISTBYID, TESSALLITE.KPIVALUE, TESSALLITE.KPIGOAL, and TESSALLITE.KPISTATUS. LISTBYID returns a named set's members as a spilled array where the Excel version supports dynamic arrays.
Retired namespace
The historical short namespace is not a shipped namespace. Replace those formulas with the equivalent TESSALLITE.* function before opening the workbook in a supported Excel host.
Caching And Refresh
Custom functions cache results for 60 seconds. To force a fresh evaluation, click Refresh in the Report Builder footer. This clears all caches and triggers a full workbook recalculation so every TESSALLITE.* formula fetches a fresh value immediately. Switching personas, switching connection profiles, and signing out also clear the caches automatically.
Refresh Sheet Data
The Refresh sheet data button (next to the Refresh button in the Report Builder footer) re-runs every Tessallite-inserted table on the active worksheet. It reads each table's stored query and re-executes it against the current session and persona. Tables that belong to a different project or model than the one currently selected are skipped with a reason. Tables whose column structure has changed since insertion are also skipped to prevent data corruption.
When a table grows or shrinks, its attribution line (the small grey "Source: Tessallite ..." row underneath it) moves with it and picks up the new refresh time.
If a table needs to grow but the cells directly beneath it are not empty — your own note, a subtotal, or a second block of data — Tessallite does not refresh that table. It leaves everything exactly as it was and tells you which table was affected, so nothing of yours is overwritten. Clear or move those cells and refresh again.
Show details. If any table was skipped, or refreshed with a warning, a Show details link appears under the buttons. Open it to see exactly which table was affected and why. Some reasons are temporary — for example, if something else in Excel was still working on the same cells, or if Excel would not hand back a table's saved query details that time, the table is left untouched and simply clicking Refresh sheet data again will usually pick it up. A temporary problem is always named in the list; a table is never dropped from the count without a reason. A table listed under Skipped was not changed. A table listed under Refreshed with warnings needs a look: it may have its new numbers with something else left incomplete, or — rarely, if Excel reported an error part-way through — a mix of old and new rows. The reason next to each table says which.
Insert Mode (Live vs Static)
A Live / Static toggle in the Report Builder footer controls how single-value inserts behave:
- Live (default): inserts a
TESSALLITE.VALUE(...)orTESSALLITE.KPI(...)formula. The value refreshes automatically on workbook recalculation. - Static: fetches the current value once and writes it as a plain number. The cell does not update automatically.
This setting applies only to the default single-value insert actions (the sigma icon on measures, and the value/status KPI inserts). Table inserts, chart inserts, CUBE formula inserts, and scorecard inserts are not affected by the toggle.
Error Messages
| Cell text | Meaning |
|---|---|
#ERROR: Not signed in... | Open the Tessallite task pane and sign in first. |
#ERROR: No model selected... | Select a project and model in the task pane. |
#ERROR: Formula model does not match... | The formula names one model while the task pane has another model selected. Select the formula's model and refresh. |
#ERROR: Session expired... | Your JWT has expired. Re-open the task pane and sign in again. |
#N/A | The measure or KPI property is not available for that cell. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Add-in icons appear black or the pane is blank | Loaded over plain HTTP, or the certificate is not trusted | Reach the add-in over https:// and trust the development certificate, then reload. |
| "Sign in failed" | Wrong tenant slug, or the deployment URL in the manifest is unreachable | Confirm the tenant slug and that the add-in host URL in the manifest resolves from your machine. |
| A measure is missing from the library | Your persona or role excludes it | Switch to a persona that includes the measure, or ask your modeller to grant access. |
| Numbers differ from the web app | An older sheet result predates a model change, or a formula was calculated while another model was selected | Re-run the report, or select the model named in the formula and click Refresh values. |
#NAME? for every TESSALLITE formula | The custom functions runtime did not register this Excel session (common on Office 2019/2021 perpetual) | Re-insert the add-in from Insert > My Add-ins > Shared Folder. A plain Excel restart is not always enough. |
The pane works but every formula shows #VALUE! after a few seconds, and the server is on localhost | The custom functions sandbox is blocked from local network access, or it does not trust the server certificate | Ask your administrator to apply the one-time machine setup described in the plugin README (loopback exemption plus installing the certificate authority into the machine store). |
A cell sits at #GETTING_DATA for 30 seconds and then shows "Request timed out" | The request never reached the server. On a localhost deployment this is the custom functions sandbox blocking local network access | Apply the one-time machine setup described in the plugin README (loopback exemption plus the certificate authority in the machine store), or point the connection profile at the server's real host name instead of localhost. Type =TESSALLITE.DIAG() to confirm: FETCH=FAIL means the server was never reached. |
| The add-in half-works: formulas respond but the ribbon button is gone, or the reverse | The Office add-in cache has become inconsistent after repeated add and remove cycles | Close Excel, delete the contents of %LOCALAPPDATA%\Microsoft\Office\16.0\Wef, reopen Excel, and re-insert the add-in. Sign in again afterwards — clearing the cache also clears the saved session. |
| A KPI or named list you just created is not in the pane | It has not been deployed yet. The add-in shows the published model only | Save and Deploy the model in the web app, then refresh the pane. To check the draft itself, use the model builder. |
| A cell shows "Published model unavailable" | The model's published version could not be read | Ask a modeller to deploy the model again, then refresh. The add-in stops here on purpose rather than showing unpublished figures. |
Tip: type =TESSALLITE.DIAG() in any cell to see the add-in's own health report — whether storage works, which model is selected, which server it talks to, and whether the server answers. Include this text when you contact support.