2019年の秋、私はカリフォルニア州チノにある120,000平方フィートの3PL倉庫でシステム支援をしていた。感謝祭ピークがようやく落ち着き、新規クライアントの入居が始まる中、倉庫マネージャーからまず循環棚卸を回すよう頼まれた。3日目、システムと実在庫が合わなかった。40カートン以上が消え、金額にして数十万ドル相当。さらに悪いことに、システムの出庫記録に誰かが手を加えていた。記録があったはずの場所に、伝票番号の空白ができていた。誰が、いつ削除したのか。ログには何も残っていなかった。

丸々1週間、その建物の十数人が一人ずつ事情を聞かれた。最終的に容疑者の範囲までは絞れたが、実際に削除ボタンを押した人物を特定できる証拠はなかった。クライアントはこの件で契約を打ち切りかけた。この一件で学んだことは今も忘れない。ほとんどの倉庫では、WMSの権限は「複雑すぎる」のではなく、最初から真剣に設定されていなかったのだ。

平常時には誰も権限のことを考えない。稼働当日、導入コンサルタントは手っ取り早く、全員にほぼ同じ権限を与えた。その後、人の出入りはあっても、権限は増えるばかりで減ることはなかった。いざ何かが起きると、画面上の全アカウントが容疑者に見える。

誰が伝票を削除できるのか

私の考えはシンプルだ。1つの倉庫で、伝票を削除できる人は1人でいい。倉庫マネージャーだけだ。

インシデントの後、まず全アカウントの権限をシステムからエクスポートした。結果はひどいものだった。削除権限を持っていたのは7〜8アカウント。マネージャーやスーパーバイザーだけでなく、カスタマーサービスの担当者や2人の派遣スタッフまで、入荷伝票や在庫調整伝票を削除できてしまった。CS担当者には至極まっとうな言い訳があった。クライアントから「注文が間違って入力された」と電話があり、削除して入れ直した。システムには何の痕跡も残らなかった。

倉庫の通路でハンディスキャナでパレットラベルをスキャンするピッカー

削除と無効化は別のものだ。この区別が重要だ。無効化は伝票のステータスをキャンセルに変えるだけで、記録は残り、監査で追跡できる。削除は記録ごと消し去る。誰にも復元できない。通常業務では無効化で常に足りる。削除機能の出番は年に数回あるかないかだ。私のやり方はこうだ。通常ロールの削除権限はすべてオフにし、無効化だけを残す。削除は倉庫マネージャーだけに与え、使うたびに理由の入力を必須とし、その理由をログに書き込む。

もう一つ見落とされがちな点。多くのWMS製品では、削除ログと業務ログが別物で、削除ログはデフォルトでオフになっている。稼働受入の際は、自分で試してみること。テスト伝票を作って削除し、誰が・いつ・どの伝票を削除したかがログに出るか確認する。出なければ受入は完了していない。

なぜ入荷担当が在庫調整できるのか

二つ目の落とし穴は、職務分離の失敗だ。入荷数量を確定した人が在庫調整までできてしまうと、選手と審判を兼ねることになる。

私が見た中で最も典型的なケース。入荷担当がZebraのハンディで出荷を受け付け、配送伝票と数が合わないことに気づいた。10カートン余り不足していた。報告せず、自分で在庫調整を登録して帳簿を合わせたのだ。3か月後、クライアントが棚卸で不足を発見したが、サプライヤーへのクレーム期限はとっくに切れており、倉庫が損失を被った。入荷担当は横領していたわけではない。ただ面倒と叱責を避けたかっただけだ。小さな問題を放置すると、大きな問題になる。

原則はシンプルだ。入荷担当の仕事は忠実に記録することであり、調整の権限は別の人のものだ。標準的なやり方は2段階調整だ。申請者が差異の理由を書き、スーパーバイザー以上が審査・承認し、システムが両者の名前を2つのアクションに記録する。金額が大きめの調整、たとえば商品価値で1,000〜2,000ドルを超えるものには、もう一段階の承認を足す。閾値は自社の平均注文金額に合わせて決めること。他人の数字を真似しない。

それから、棚卸調整と日常の調整は分けて考えること。実地棚卸は差異を見つけるためにあるのだから、差異伝票は通常プロセスで回せばいい。しかし棚卸時間外に手動で行う調整は、1件ずつよく見たほうがいい。私はシステムから毎日の手動調整リストをマネージャーにメールさせるのが好きだ。数行より長いものがあれば、マネージャーがクリックして中を見る。この習慣を続ければ、小さなごまかしの多くは大きくなる前に止まる。

辞めた人のアカウントは誰が閉じるのか

三つ目の落とし穴は、最も退屈で、最もよくあるものだ。人は辞めるのに、アカウントが生き続けている。

3PLなら誰でも知っているが、現場の離職率は高い。ピークシーズン用に派遣を大量に雇い、閑散期になったら手放す。いくつもの倉庫を調べたが、ほぼすべての倉庫で、従業員が辞めてから3か月経っても有効なアカウントがあった。そのアカウントは誰の手にあるのか。辞めた本人の場合もあれば、現役社員が「借りて」いる場合もある。「彼のアカウントはフル権限だから、申請する手間を省いて使わせてもらう」。1つのアカウントを複数人が共有していると、何か起きても正しく問い質すことさえできない。

対策は難しくない。続けるのが難しいのだ。鉄のルールが二つ。第一に、アカウントは従業員の最終日の退勤前に無効化する。これは人事の退職連絡の一部であり、「そのうち」やる作業ではない。第二に、人事の人員リストとシステムアカウントを月に一度突き合わせる。合わないものは、まず無効化してから質問する。ピークシーズン用の臨時アカウントには最初から有効期限を付け、自動で死ぬようにする。誰も覚えておく必要がない。

もう一つある。倉庫内で役割が変わるケースだ。ピッカーからチェッカーへ、夜勤から日勤のリーダーへ。役割が変われば権限も変えなければならず、古い権限は返上だ。ほとんどの倉庫は権限を増やすばかりで減らさないので、3年目のベテランは持つべきでない権限の山を抱えている。私の提案。役割変更のたびに権限をリセットする。まずゼロにして、新しい役割用に付け直す。余分な10分で、埋まった地雷が1つ減る。

自分の権限が健全かどうかを測る簡単なテストがある。明日の朝カートンが1つ消えたとして、1時間以内に、システムログから「誰がいつそのカートンに触ったか」を特定できるか。できるなら、あなたの権限とログは生きている。できないなら、2019年の私たちと同じで裸同然だ。

明日できることが三つある。第一に、全アカウントと権限をエクスポートし、3つの高リスク権限、伝票の削除、手動調整、マスタデータのエクスポートを取り戻し、倉庫マネージャーだけに残す。第二に、退職者のアカウントを一掃してその日のうちに無効化し、臨時アカウントには有効期限を付ける。第三に、操作ログをオンにし、作成・編集・削除のテストを自分で回して、すべてのステップに痕跡が残ることを確認する。この三つをやれば、内部統制は世の多くの倉庫を上回る。

最後に一言。権限は最初は厳しく、後で緩める。逆は絶対にダメだ。厳しいと文句が出る。緩いと何か起きたときに本物のお金が消える。

英語版からの翻訳。内容に相違がある場合は英語版を優先します。