Cycle Counting the Smart Way: ABC, Count Books, and Mobile

🎯 Who this is for: Storeroom supervisors and inventory controllers responsible for inventory accuracy, plus the storekeepers who do the counting and the admins who configure the ABC classes, frequencies, and tolerances behind it.

Series: Part 4 of 10 — MAS 9 Supply-Chain Playbook | Read time: 26 minutes

🗓️ Why Wall-to-Wall Counting Is the Wrong Model

Once a year, the storeroom shuts down. For two or three days nobody issues, nobody receives, and a team walks every shelf counting every part while maintenance waits and downtime costs pile up. At the end you get a single accuracy number, a pile of adjustments, and eleven months of drift before you find out anything is wrong again.

That is the wall-to-wall model, and it is the wrong model. It optimizes for a once-a-year audit signature at the cost of continuous accuracy and continuous availability.

Cycle counting inverts it. Instead of counting everything once a year, you count your most important items often and your least important items rarely — A-class monthly, B-class quarterly, C-class annually — on a rolling schedule that never shuts the storeroom down. Variance is found in weeks, not a year. There is no storeroom outage. And your accuracy KPI is a live, month-over-month trend instead of an annual verdict.

<aside>
💡 Key insight: Cycle counting is not "counting less." It is counting proportionally — spending your counting effort where the money and the risk are. A handful of A-class items usually represent the majority of your inventory value, so counting them twelve times a year and the C-class junk once buys more accuracy per hour of counting than any wall-to-wall exercise ever did.
</aside>

MAS 9 automates the scheduling, so once the classification and frequencies are set, the system tells you what to count each week and you simply do it — increasingly, from a phone.

🔤 ABC Classification

Cycle counting rests on classifying every stocked item as A, B, or C by importance. The standard criterion is annual issue value — quantity issued over a year times unit cost.

The split

A typical Pareto distribution looks like this:

ClassShare of valueShare of itemsCount frequency
ATop ~80% of issue value~10–20% of itemsEvery 30 days
BNext ~15%~30% of itemsEvery 90 days
CBottom ~5%~50–60% of itemsEvery 365 days

A small set of A-class items carries most of your value; a large tail of C-class items carries very little. Counting the A-class twelve times a year and the C-class once concentrates effort exactly where an error is most expensive.

The first classification pass

On a fresh migration, nothing is classified. The first pass is a one-time exercise you run per storeroom:

  1. Pull twelve months of issue history per stock line — quantity issued times unit cost gives annual issue value. This is a BIRT/Cognos report or a saved query over MATUSETRANS joined to INVENTORY.
  2. Sort descending by annual issue value and compute the running cumulative percentage.
  3. Tag the lines that make up the top ~80% of cumulative value as A, the next ~15% as B, and the remainder as C, writing the result to each stock line's ABC Type field in the Inventory application.
  4. Seed any brand-new stock line with no history manually — usually A or B if it is a planned critical spare.

After this one pass, turn on quarterly auto-recalculation (below) and you never hand-classify the bulk again. The Tier 0 query set from Part 1 even includes Stock Lines Missing ABC Class so you can see, at a glance, which lines still need a class assigned.

Classify per storeroom, not per company

This is the mistake that quietly ruins a cycle-count program: applying one company-wide ABC list to every storeroom. Different storerooms have different A-items. The bearing that is A-class in your main plant storeroom may be a rarely-touched C-item in a satellite storeroom. Classify per site or per storeroom, because the count date and the value profile are storeroom-specific. If the same item lives in three storerooms, each has its own classification and its own count schedule.

<aside>
⚠️ Watch out: ABC classification and cycle-count date are per stock line — that is, per item per storeroom. There is no single company-wide "count date" for an item. Storekeepers and reports that assume one will chase a number that does not exist.
</aside>

⚙️ Setting Count Frequency by Class

Once items are classified, the count frequency per class is configured centrally on Organizations → Inventory Options → ABC Type:

ClassFrequency
AEvery 30 days
BEvery 90 days
CEvery 365 days

MAS 9 uses this to advance each stock line's next count date after every reconciliation. You classify the item once; the system schedules the counts forever after. The frequencies above are the conventional defaults — tune them to your risk appetite and your counting capacity, but keep the proportion: A counted many times more often than C.

📋 Generating and Assigning Count Books

With classification and frequency in place, the weekly rhythm is short. The Physical Count application (working over INVBALANCES) drives it.

  1. Generate count lists. In Physical Count, run the Generate Count Lists action against physcntdate <= SYSDATE — that pulls every stock line whose count is due.
  2. Assign the count lists to storekeepers, typically by area or aisle.
  3. Execute the counts on Maximo Mobile Inventory or on the desktop.
  4. Reconcile variances — within tolerance auto-adjusts, outside tolerance routes to a supervisor (next section).
  5. The count date auto-advances per class, and the item drops off this week's list and reappears when it is next due.

The Tier 0 starter pack from Part 1 already gave storekeepers the two saved queries that make this visible without opening the app cold: Cycle Counts Due This Week (physcntdate <= SYSDATE + 7) and Cycle Counts Overdue (physcntdate < SYSDATE). The due list is a Start Center portlet; the storekeeper sees it every morning.

A worked weekly pass

Monday morning, a supervisor runs Generate Count Lists. It returns forty A-class and B-class lines due this week. They split them across three storekeepers by aisle. Each storekeeper opens Maximo Mobile, walks their aisle scanning bins, and enters counts. By Wednesday the counts are in; the supervisor reconciles; thirty-six lines were dead-on or within tolerance and auto-adjusted, four exceeded tolerance and are now in the supervisor's queue for a recount and a root-cause note. No storeroom shutdown. No paper.

📏 Variance Tolerance: Auto-Adjust vs. Route

Not every count discrepancy deserves a supervisor's attention. Tolerance decides which do. It is configured on Organizations → Inventory Options as two thresholds:

  • Count Variance % — for example, 2% for A items, 5% for B, 10% for C.
  • Count Variance $ — an absolute floor, for example $100.

Anything inside tolerance auto-adjusts on reconciliation — the balance corrects and the count date advances, no human required. Anything outside tolerance routes to a supervisor for review, a recount, and a reason before the adjustment posts.

Why two thresholds

The percentage catches proportional errors on high-quantity items; the dollar floor catches material errors on low-quantity, high-value items where a small percentage is still real money. A count off by one unit on a $5,000 rotating spare might be under 2% but well over the $100 floor — you want that one reviewed. Configure both, and the tighter of the two wins.

A worked reconciliation

A storekeeper counts an A-class fastener line: the system balance says 480, the physical count is 472 — a variance of 8 units. Unit cost is $0.90, so the dollar variance is $7.20. The percentage variance is 8/480 ≈ 1.7%. Against an A-class tolerance of 2% and a $100 floor, both thresholds are satisfied, so the line auto-adjusts to 472 and the count date advances 30 days. Now the same storekeeper counts an A-class rotating seal: balance says 6, count says 5 — one unit, but at $1,400 each that is a $1,400 variance. The percentage (16.7%) and the dollar amount both blow past tolerance, so the line routes to the supervisor for a recount and a reason code before any adjustment posts. Same day, two counts, two entirely different treatments — which is exactly what a tuned tolerance is for.

<aside>
💡 Key insight: Tolerance is where a cycle-count program earns its keep or drowns. Set it too tight and every count routes to a supervisor who stops reviewing them; set it too loose and real shrinkage auto-adjusts away invisibly. Start at 2/5/10% by class with a modest dollar floor, then tune from the actual variance distribution after the first month.
</aside>

📱 Paperless Counts on Maximo Mobile

The point of the whole program is realized on the phone. Maximo Mobile Inventory lets a storekeeper count in-bin, scanning as they go, without a clipboard and without walking back to a PC. The Adjust Inventory tile handles physical count and adjustments; scanning a bin label auto-populates the bin, and scanning the item confirms the line.

The productivity gain is real: a barcode-driven mobile count is dramatically faster than a paper count later keyed into a terminal, and it removes the transcription errors that a two-step paper process introduces.

The offline caveat

Mobile counts can be created offline in a low-signal warehouse, but they need a sync before reconciliation. A count entered on a phone that has not synced is not yet visible to the supervisor doing reconciliation. Warn storekeepers to sync (a pull-to-refresh) before they report a count area complete, and configure conflict handling so two people counting the same bin offline don't silently overwrite each other — last sync wins unless you scope offline data by storeroom or bin.

🔁 Keeping Classifications Fresh: ABC Auto-Recalculation

Classifications go stale. An item that was A-class three years ago may barely move today; a new critical spare may still be sitting in C because nobody reclassified it. Left alone for two years, your C-class list balloons with items that should be A or B, and your counting effort points at the wrong shelves.

MAS 9 can recompute ABC every quarter from issue history. Turn it on. It re-runs the annual-issue-value calculation and re-tags each stock line, so the classification tracks reality instead of freezing at whatever it was on migration day. Pair the auto-recalculation with a quarterly supervisor spot-check — the algorithm handles the bulk, the human catches the critical-spare-in-the-wrong-class exceptions.

🧮 The Accuracy KPI

Cycle counting produces the one number an inventory controller lives by:

Inventory Accuracy % = lines counted correctly / total lines counted

Reported monthly, by class, it turns accuracy from an annual verdict into a managed trend. You watch it move; you drill into the class or storeroom that dips; you tie a dip back to a root cause — a bin that isn't labeled, a storekeeper who isn't scanning, a receiving process that isn't putting away to the right bin.

Because the count books, variances, and reconciliations all live in Maximo, the KPI is a byproduct of doing the counts, not a separate reporting project. A monthly dashboard by ABC class is the natural artifact.

⚠️ Edge Cases That Bite

A few realities to design around before they surprise you:

  • Per-storeroom count dates. As noted, the count date is per stock line. The same item in three storerooms has three independent schedules. Reports and queries must filter by storeroom.
  • Offline sync before reconciliation. Counts done offline are invisible until synced. Build "sync before you report complete" into the mobile SOP.
  • Bin-level counting is faster. If your storeroom uses bins, count one aisle or one bin range at a time. Bin-level counts are dramatically quicker than counting an item across every bin it lives in, and they map cleanly to how a storekeeper physically walks the floor.
  • New items with no issue history. A brand-new stock line has no annual issue value, so ABC can't classify it from history. Seed it manually — usually as A or B if it is a planned critical spare — until it accumulates enough history for auto-recalculation.

🔧 Troubleshooting Cycle Counts

The recurring problems and their fixes:

SymptomCauseFix
Count list is emptyNo lines due, or wrong storeroom filterConfirm physcntdate and storeroom scope
C-class list keeps growingABC auto-recalculation is offEnable quarterly recompute + spot-check
Every count routes to supervisorTolerance set too tightLoosen % / $ thresholds per class
Real shrinkage disappears silentlyTolerance set too looseTighten thresholds; review the $ floor
Supervisor can't see a mobile countCount created offline, not yet syncedSync the device before reconciling
Same item, different count datesCount date is per storeroom by designFilter reports by storeroom

🎓 The Commandments of Smart Counting

  1. Thou shalt cycle count, not shut down — proportional counting beats wall-to-wall.
  2. Thou shalt classify per storeroom, never one list for the whole company.
  3. Thou shalt let frequency and count dates auto-advance by class.
  4. Thou shalt set both a percent and a dollar tolerance, and tune from real data.
  5. Thou shalt count on mobile — and sync before reconciling.
  6. Thou shalt recompute ABC quarterly, so classifications track reality.

Key Takeaways

  • Wall-to-wall counting is the wrong model — cycle counting finds variance in weeks, with no storeroom shutdown, on a rolling A/B/C schedule.
  • ABC classification is by annual issue value, done per storeroom — A monthly, B quarterly, C annually — because count dates are per stock line, not per company.
  • Generate Count Lists from Physical Count drives the weekly rhythm, and count dates auto-advance after each reconciliation.
  • Tolerance decides auto-adjust vs. route to supervisor — set both a percentage and a dollar threshold and tune from the first month's variance distribution.
  • Count paperless on Maximo Mobile, sync before reconciling, and recompute ABC quarterly so classifications never go stale.

References

Series Navigation

Previous:Part 3 — Fast Receiving & Barcode
Next:Part 5 — Reservations & Replenishment

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