The Storekeeper's First Hour: A Start Center That Runs the Storeroom Before Anyone Logs In

๐ŸŽฏ Who this is for: Storeroom clerks, storeroom supervisors, inventory controllers, and the Maximo admins who support them โ€” anyone who will be standing at a MAS 9 login screen on go-live morning and needs the storeroom to run clean from the first transaction.

Series: Part 1 of 10 โ€” MAS 9 Supply-Chain Playbook | Read time: 22 minutes

๐ŸŒ… Why the First Hour Decides the Rollout

Go-live morning is not a training problem. It is a configuration decision you made โ€” or failed to make โ€” the week before.

Picture the storekeeper who logs into MAS 9 Manage for the first time at 7 a.m. The Start Center is empty. The query bar is blank. The "Go To" menu lists forty-five applications, and nothing tells them which three run the storeroom. So they do what any human does under pressure: they fall back on the worst possible habits. They open the Inventory application cold, type a full thirteen-character item number by hand, mis-key a digit, and spend four minutes hunting for a part that was one saved query away. By 9 a.m. they have logged three help-desk tickets, and by Friday the whole storeroom believes MAS 9 is slower than 7.6.

None of that is MAS 9's fault. It is the absence of a Tier 0 starter pack โ€” a pre-loaded Start Center and a set of public saved queries, deployed before anyone signs in. Get Tier 0 right and the same storekeeper logs in to a screen that already shows what needs to be issued today, what dropped below reorder overnight, what receipts are waiting on the dock, and what cycle counts are due this week. They never open an app cold. They never type a full item number. The rollout is quiet.

<aside>
๐Ÿ’ก Key insight: The single highest-leverage hour of an entire MAS 9 storeroom rollout is the sixty minutes one admin spends deploying Tier 0 before the first storekeeper logs in. Everything else in this series assumes it is done.
</aside>

This part is that starter pack, spelled out: the six result-set portlets and four KPI tiles that put a storeroom on one screen, the fifteen saved queries that kill the empty filter bar, the bind-variable trick that personalizes one template for every user, the sixty-minute deployment plan, and the hour-1 checklist that proves it all worked. None of it needs custom code. All of it is out-of-the-box MAS 9.0 and 9.1.

๐Ÿงญ What Tier 0 Actually Is

Tier 0 is the pre-loaded version of two things every storekeeper would eventually build for themselves โ€” a personalized Start Center and a stack of saved queries โ€” done once, centrally, and pushed to everyone before day one.

The two failure modes it prevents

There are exactly two ways a storeroom go-live goes wrong in the first hour, and Tier 0 closes both:

  • The blank-screen failure. Storekeepers meet an empty Start Center and an empty query bar. They improvise, they mis-key, they open apps cold, and they form habits that never fully unwind. This is the common one.
  • The wrong-data failure. Someone builds a Start Center but hard-codes a storeroom name into every portlet, so it works for one person and shows the wrong numbers โ€” or nothing โ€” for everyone else. This is the subtle one, and it is why the bind variable below matters so much.

The four things you pre-load

A complete Tier 0 deployment loads exactly four artifacts:

ArtifactWhat it isScope
15 saved queriesOne or more per storekeeper app, marked Public, scoped by :STOREROOMSTOREROOM security group
1 Start Center templateSTOREKEEPER_HOME โ€” six result sets, four KPIs, Favorites, InboxPushed to STOREROOM and STOREROOM_SUPV
1 deployment planA 60-minute runbook one admin executes before go-liveAdmin
1 hour-1 checklistAn eight-box verification every storekeeper ticksEvery storekeeper

Do them in that order. The template binds to the queries, so the queries must exist first; the checklist verifies the template, so the template must be assigned before go-live morning.

๐Ÿ“Š The Six Result Sets That Run a Storeroom

A Result Set portlet is a saved query pinned to the Start Center as a live, refreshing list. Six of them, in a left column, are the whole storeroom on one screen. Each is bound to a starter query and set to refresh on a cadence that matches how fast the underlying work moves.

SlotPortletSource query (app)Refresh
L1Items Below ReorderBelow Reorder โ€” My Storeroom (Inventory)15 min
L2Open Issues TodayOpen Issues Today โ€” My Storeroom (Inventory Usage)5 min
L3PO Receipts PendingPending PO Receipts โ€” My Storeroom (Receiving)10 min
L4Cycle Counts Due This WeekCycle Counts Due This Week (Physical Count)daily
L5Stale Reservations (>30d)Stale Reservations >30d โ€” My Storeroom (Inventory Usage)daily
L6Inbound Transfers PendingInbound Transfers Pending (Shipment Receiving)15 min

Why these six and not others

Each portlet answers a question the storekeeper would otherwise have to go looking for:

  • Below Reorder answers "what am I about to run out of?" โ€” the list that prevents the "I didn't know we were out of that" excuse.
  • Open Issues Today answers "what work am I feeding right now?" โ€” the fastest-moving list, hence the five-minute refresh.
  • PO Receipts Pending answers "what's arriving that I need to put away?" so a truck on the dock is never a surprise.
  • Cycle Counts Due answers "what do I need to count this week?" โ€” the quiet discipline that keeps accuracy from decaying (Part 4).
  • Stale Reservations answers "what's blocking stock that could be issued elsewhere?" โ€” the ten-minute-a-week cleanup that stops phantom stockouts (Part 5).
  • Inbound Transfers answers "what's coming from another storeroom that I need to receive?" so in-transit material lands cleanly.

<aside>
๐Ÿ’ก Key insight: The design principle behind the six is one screen answers every "do I need to act?" question a storekeeper has before lunch. If a portlet does not change what the storekeeper does in the next hour, it does not earn a slot.
</aside>

๐ŸŽฏ The Four KPI Tiles

Where result sets are lists you act on, KPI portlets are single numbers you glance at. Four of them, in the right column, give the storekeeper โ€” and their supervisor โ€” an at-a-glance pulse.

KPIWhat it measuresMetric
Inventory Value ($)Capital sitting on the shelfSUM(currentbal * avgcost) for the storeroom
Below-Reorder CountStockout exposureCOUNT(*) where currentbal < minlevel
Open Reservations CountCommitted-but-unissued demandCOUNT(*) of ENTERED reservations
Material Issued This Week ($)ThroughputSUM(linecost) from this week's issues

Traffic-light thresholds

KPIs earn their keep by turning green, yellow, or red. Start with these illustrative thresholds and tune them over the first thirty days against your actual storeroom size:

KPIGreenYellowRed
Below-Reorder Countโ‰ค 1011โ€“30> 30
Open Reservations Countโ‰ค 2526โ€“75> 75
Inventory Value โ€” drift from baselineยฑ5%ยฑ5โ€“15%> ยฑ15%
Material Issued This Week โ€” vs 4-week avgยฑ20%ยฑ20โ€“50%> ยฑ50%

The thresholds are not sacred. Their purpose is to make an abnormal number look abnormal at a glance, so a supervisor walking past a shared display sees red before a stockout becomes an outage.

๐Ÿ”‘ The :STOREROOM Bind Variable

Here is the mechanism that makes one template serve an entire storeroom group without per-user editing.

Every starter query uses the :STOREROOM substitution parameter in its WHERE clause instead of a hard-coded storeroom name. When a storekeeper opens the query, MAS 9 resolves :STOREROOM to their default storeroom, pulled from their person record. One query, written once, shows storeroom A's storekeeper the storeroom A numbers and storeroom B's storekeeper the storeroom B numbers.

A worked example

Take the below-reorder query. Written the wrong way โ€” hard-coded โ€” it looks like this and only works for the CENTRAL storeroom:

currentbal < minlevel AND location = 'CENTRAL' AND siteid = 'BEDFORD'

Written the right way, it works for every storekeeper in the group with no edits:

currentbal < minlevel AND location = :STOREROOM AND siteid = :SITEID

Both :STOREROOM and :SITEID resolve from the logged-in user's session. For the parameter to have something to resolve to, the storekeeper's default storeroom must be set โ€” on the person record, or via Security Groups โ†’ Sites tab โ†’ Default Storeroom. If it is blank, the query returns nothing and the storekeeper sees an empty portlet, which looks exactly like the blank-screen failure you were trying to prevent.

<aside>
โš ๏ธ Watch out: The most common Tier 0 defect is not a broken query โ€” it is a storekeeper with no default storeroom set. The query is fine; the person record is blank. Verify default storerooms before you build the template, not after a storekeeper reports an empty screen.
</aside>

๐Ÿ—‚๏ธ The Fifteen Starter Saved Queries

These are the fifteen queries the admin creates in Query Manager and marks Public so they appear in the Start Center Result Set picker for the whole group. All use ANSI SQL that runs on both Db2 and Oracle backends. Only one query per app can be marked Default per user โ€” that is the one that loads automatically when the app opens.

Inventory (app: INVENTOR)

QueryDefaultWHERE clause
Below Reorder โ€” My StoreroomYcurrentbal < minlevel AND location = :STOREROOM AND siteid = :SITEID
Zero Balance โ€” My StoreroomNcurrentbal = 0 AND location = :STOREROOM AND siteid = :SITEID
Slow Movers (180d)Nlastissuedate < SYSDATE - 180 AND location = :STOREROOM AND currentbal > 0
High Value Active (>$10k)Ncurrentbal * avgcost > 10000 AND location = :STOREROOM

Inventory Usage (app: USAGE)

QueryDefaultWHERE clause
Open Issues TodayYstatus = 'ENTERED' AND usagetype = 'ISSUE' AND storeloc = :STOREROOM
Stale Reservations (>30d)Nstatus = 'ENTERED' AND storeloc = :STOREROOM AND changedate < SYSDATE - 30
Stale Reservations (>90d) โ€” EscalateNstatus = 'ENTERED' AND storeloc = :STOREROOM AND changedate < SYSDATE - 90
Transfers Out โ€” In ProgressNusagetype = 'TRANSFER' AND status IN ('ENTERED','STAGED','SHIPPED') AND storeloc = :STOREROOM

Receiving, Physical Count, Shipment, Reorder

Query (app)DefaultWHERE clause
Pending PO Receipts (Receiving)Y... po.status = 'APPR' ... AND storeloc = :STOREROOM AND receivedqty < orderqty
Overdue Receipts (Receiving)Nrequireddate < SYSDATE AND receivedqty < orderqty AND storeloc = :STOREROOM
Inspection Hold (Receiving)Ninspectionrequired = 1 AND inspectedqty < receivedqty AND storeloc = :STOREROOM
Cycle Counts Due This Week (Physical Count)Yphyscntdate <= SYSDATE + 7 AND location = :STOREROOM
Cycle Counts Overdue (Physical Count)Nphyscntdate < SYSDATE AND location = :STOREROOM
Inbound Transfers Pending (Shipment)Ystatus = 'SHIPPED' AND tostoreloc = :STOREROOM
Ready to Reorder (Reorder)Ylocation = :STOREROOM AND currentbal <= minlevel AND issiteinv = 1

One caution on visibility: mark every one of these Public. If a query is left Private, it will not appear in the group's Result Set picker, and the portlet bound to it renders empty for everyone but its author.

โฑ๏ธ The 60-Minute Deployment Plan

One Maximo admin, roughly sixty minutes, executed before go-live morning. This is the runbook.

MinStepWhere
0โ€“5Verify STOREROOM and STOREROOM_SUPV security groups exist and have membersSecurity Groups
5โ€“10Confirm every storekeeper has a default storeroom on their person record โ€” this is what :STOREROOM resolves toPeople โ†’ Main tab
10โ€“30Create the fifteen starter queries in Query Manager; mark Public, set Default where indicatedQuery Manager (from each app's list view)
30โ€“45Build the STOREKEEPER_HOME template: six result sets bound to queries, four KPIs with SQL and thresholds, Favorites, InboxStart Center โ†’ Template Administration
45โ€“55Assign the template to STOREROOM and STOREROOM_SUPV; mark default on first loginTemplate Administration โ†’ Assign
55โ€“60Log in as a test storekeeper; confirm the Start Center renders, queries return data, KPIs computeTest login

The pre-go-live smoke test

Before you call it done, run this smoke test โ€” it is what separates a deployment that looks finished from one that is:

  • Log in as test storekeeper #1 (storeroom A). The Start Center shows storeroom A's numbers.
  • Log in as test storekeeper #2 (storeroom B). The Start Center shows different numbers โ€” storeroom B's. If both show the same data, your queries are hard-coded, not bind-variable scoped.
  • Open Inventory. The defaulted "Below Reorder โ€” My Storeroom" query loads automatically.
  • Open Inventory Usage. The defaulted "Open Issues Today" query loads automatically.
  • Click through each Result Set portlet. Each drills into the underlying app list.
  • Confirm the Inbox tile shows at least the workflow approvals routed to the test user.

The two-user step is the one people skip and the one that catches the wrong-data failure. Run it every time.

โœ… The Storekeeper Hour-1 Checklist

Hand this to every storekeeper on go-live morning. If they cannot tick every box, Tier 0 is not finished for them โ€” send them back to the admin.

  • [ ] I logged in and my Start Center shows my storeroom's numbers, not blanks.
  • [ ] I see at least six Result Set portlets with real data.
  • [ ] I see at least four KPI tiles with numbers.
  • [ ] Opening Inventory loads "Below Reorder โ€” My Storeroom" automatically.
  • [ ] Opening Inventory Usage loads "Open Issues Today" automatically.
  • [ ] My Favorites menu has at least eight apps pre-pinned.
  • [ ] The Inbox icon in the top bar shows any approvals routed to me.
  • [ ] I know the name of my default storeroom.

Once every box is ticked, the storekeeper is ready to move into Part 2 and start putting real transactions through Inventory Usage.

๐Ÿงจ What Breaks: Portlet Migration Gotchas

If you are coming from a heavily customized 7.6 Start Center, do not assume your old portlets follow you. The MAS 9 Carbon UI renders Start Center content differently, and two categories of 7.6 portlet do not survive the trip.

Custom portlet code

Custom portlet code from 7.6 โ€” anything hand-built beyond the stock portlet types โ€” frequently will not carry forward. The supported, and honestly cleaner, replacement is a Result Set portlet bound to a saved query plus KPI tiles. Rebuild the intent as a query, not as code. In almost every case the result is simpler to maintain than the original.

Flash and SVG graph portlets

Graph portlets that relied on the old Flash or SVG rendering are gone. Where you had a chart, use a Result Set for the detail and a KPI tile for the headline number. You lose the pie chart; you gain a number that is legible on a phone and a list you can click into.

<aside>
๐Ÿ’ก Key insight: Treat the Start Center rebuild as a chance to delete, not to port. Most 7.6 custom portlets encoded a question โ€” "what's below reorder," "what did we issue this week." Re-express the question as a public saved query and you end up with less to maintain and a screen that works identically on desktop and mobile.
</aside>

๐Ÿ”ง Troubleshooting the First Hour

When a storekeeper's screen is not right, it is almost always one of these five things:

SymptomLikely causeFix
Portlet is empty for one userNo default storeroom on that person recordSet default storeroom; :STOREROOM now resolves
Portlet is empty for everyoneBound query left PrivateRe-mark the query Public in Query Manager
Everyone sees the same numbersStoreroom hard-coded in the queryReplace literal with :STOREROOM / :SITEID
App opens with no filterNo query marked Default for that app/userMark the intended query Default
KPI shows an errorKPI SQL references a wrong column or unscoped tableCorrect the KPI SQL in the template

Work top to bottom. The first two rows account for the overwhelming majority of go-live-morning tickets, and both take under a minute to fix.

๐ŸŽ“ The Commandments of the First Hour

  1. Thou shalt pre-load the Start Center before anyone logs in โ€” Tier 0 is the highest-leverage hour of the rollout.
  2. Thou shalt scope with bind variables, never hard-code a storeroom name.
  3. Thou shalt set every storekeeper's default storeroom so the parameters resolve.
  4. Thou shalt mark starter queries Public, or the portlets render empty.
  5. Thou shalt run the two-user smoke test, because it is the only step that catches wrong-data.
  6. Thou shalt rebuild custom portlets as queries, not resurrect 7.6 code.

Key Takeaways

  • An empty Start Center on go-live morning is how a storeroom rollout generates a week of tickets and permanent bad habits โ€” the fix is a pre-loaded Tier 0 pack, not more training.
  • Tier 0 is four artifacts: fifteen public saved queries, one locked STOREKEEPER_HOME template, a 60-minute deployment plan, and an hour-1 checklist.
  • The `:STOREROOM` bind variable lets one template serve every storekeeper โ€” provided each person record has a default storeroom set.
  • Six result sets and four KPIs put the whole storeroom on one screen: below-reorder, open issues, PO receipts, cycle counts, stale reservations, inbound transfers, plus value, below-reorder count, open reservations, and weekly throughput.
  • Custom 7.6 portlets and Flash/SVG graphs do not carry forward โ€” rebuild the question as a saved query and a KPI tile.

References

Series Navigation

Previous:Series Index โ€” MAS 9 Supply-Chain Playbook
Next:Part 2 โ€” Inventory Usage Mastery

About TheMaximoGuys: We help Maximo developers and teams navigate the move to MAS 9 with practical, no-hype guidance grounded in how the platform actually behaves.

Published by TheMaximoGuys | July 2026