Lock and usage review · prepared 12 September 2026
Pulse environment PRDTM101 Service workforce_and_fpm TM1 server Workforce_and_FPM Window 29 Aug – 12 Sep 2026

One query held the model for four hours and forty-eight minutes.

Everything on this page traces to a Pulse MCP call. The fortnight has 55 named users and a steady weekday rhythm, but the lock picture is not spread across it — 44 of 51 sampled lock waits fall on a single morning, and they queue behind one runaway MDX query while a hierarchy rebuild was underway.

The blocking chain

10 Sep 2026, 02:12 – 07:04 UTC
running, holding a lock chore waiting user waiting bar length = longest elapsed time observed in a Pulse thread sample

Fourteen days, day by day

Pick a day. Bars show lock-wait alerts in red and logged sessions in blue; the orange tick above a column marks a day where Pulse's source-control scan recorded a model change.

10 September 2026

Model changes recorded that day

Who actually used the model

55 named users in the window. Service accounts are marked; r* chore threads are excluded because they are automation, not people.

UserSessionsConnected min Avg sessionSessions

Engine work is derived as connected minutes × running % — Pulse returns the percentage, not the minutes. Connected time is a poor proxy for load: Andrew Whitfield holds 1,376 connected minutes at 0.95% running, while Ben Halloway turns 514 minutes into 105 minutes of actual engine work.

What the model changes explain

Five commits landed in the window. Pulse's source-control scan runs at 01:45, so a commit stamped 9 Sep captures work done on 8 Sep — the scan time is not the edit time. Read that way, the changes line up with the locks rather than merely coinciding with them.

A hierarchy was being built by hand, in production, during the day

}Temp_FIN BSEG 3.dimx appears on 8 Sep and is gone by 9 Sep, replaced by a new TI process Dim.FIN BSEG 3.Create Northwind Hierarchy.pro. That is the signature of interactive hierarchy surgery later formalised into code. The lock samples show the same work from the other side: Adrian Koval in Arc issuing tm1.SetComponent against FIN BSEG 3 / Northwind Org Structure for elements Northwind Admin and Northwind G and A.

Cell security was rewritten three days running

}CellSecurity_FIN General Ledger.RUX changed on 9, 10 and 11 Sep — 45 lines swapped, then 15 added, then 9 more. FIN General Ledger.RUX itself was rewritten almost line for line on 11 Sep (185 insertions, 184 deletions). Rule and security churn on the same cube across consecutive days is worth a review pass on its own.

Dimension edits and control-cube housekeeping want the same lock

Every structural dimension change touches }DimensionProperties. So does }APQ.Dim.ControlDimensionCopies.Update, the APQ housekeeping step. 20 of 51 sampled waits are on that one control cube — more than every other contended object combined.

What to do

  1. Cap long-running MDX from Apliqo.

    A single ExecuteMDX thread ran 4h 48m and became the head of the whole chain. Nothing else on this page matters as much: without it, the housekeeping chore would not have waited 2h 33m and Adrian Koval's dimension edits would not have waited 15 minutes each.high impact · low effort · Pulse Live Monitor can cancel; a query timeout prevents recurrence

  2. Move dimension and hierarchy work off the production instance, or out of business hours.

    The FIN BSEG 3 and FIN BSEG 1 hierarchy builds were done interactively in Arc against the live model. The finished TI processes now exist — run those in a window instead of hand-editing.high impact · medium effort · needs a process change, not a config change

  3. Reschedule APQ.Server.DailyMaintenanceSetup and APQ.Dim.ControlObjects.Copy away from user hours.

    Both take write locks on }DimensionProperties and both appear as the middle link in these chains. They are housekeeping and can run when nobody is editing.medium impact · low effort · schedule change in the Pulse UI

  4. Restore session and process logging.

    Logging stopped after 7 Sep. The worst lock day in the fortnight has thread samples and alerts but no session records, so the users caught in it cannot be enumerated — only the ones Pulse happened to sample.medium impact · low effort · but it is blocking future analysis

What this dashboard cannot tell you

Session and operation logging for this service stops after 7 Sep — a Service Is Offline alert fired that day, and operationsByDay reads 0 from 8 Sep onward while threads and alerts keep recording. So the user table covers 29 Aug – 7 Sep, while locks and alerts cover the full fortnight. Alert history itself only reaches back to 1 Sep. Lock waits come from Pulse's periodic thread samples, roughly every two minutes, so short waits between samples are invisible and the 51 count is a floor, not a total. Commit authorship is SYSTEM for all five commits — Pulse's scanner, not the person who made the change, so the changes cannot be attributed to a named user from this data.