メインコンテンツへスキップ
見出し画像

Inventory(alm_stockroom):在庫の置き場と移送を追う


    「新しいPCを1台、大阪の拠点に送ってほしい」。この一言の裏で、資産管理は3つのことを同時に扱っています。今どこに何台あるか。どこからどこへ運ぶか。運び終わったあと、その1台の状態はどう変わるか。

    ServiceNow の Inventory メニューは、この3つをそれぞれ別のテーブルで持っています。置き場(alm_stockroom)、移送オーダー(alm_transfer_order)、そして資産そのものの状態(alm_asset の install_status)。今回は実機のデータを追いながら、在庫が動くときに何がどう記録されるのかを確認します。

    この記事は、ServiceNow の PDI(Personal Developer Instance、無料の個人検証環境)Zurich リリース・OOTB(初期設定)で確認した実測メモです。件数・項目は REST と実画面で確認しました(確認日 2026-07-26)。本番環境では設定が異なります。

    在庫が動くときの登場人物

    先に全体の流れを見ておきます。


    画像

    左が補充ルール。在庫が下限を割ったら発注や移送のきっかけを作ります。真ん中が移送オーダーと明細で、「どこからどこへ、何を、何個」を持ちます。右が資産で、届いたあとに状態が変わる側です。

    置き場:資産が「今いる場所」

    実測9件

    alm_stockroom は在庫の置き場を表すテーブルです。PDI には9件入っていました。


    画像

    名前を見ると、San Diego 周辺の拠点が並びます。Pickup/Dropoff と付くものが5件、Warehouse と付くものが4件。San Francisco と Santa Monica の倉庫には Manager として Aileen Mottern が設定されていました。

    持っているフィールドは素直です。name / type / location(→cmn_location)/ manager(→sys_user)/ assignment_group。加えて latitude と longitude があります。緯度経度を置き場自身が持つのは、配送距離や最寄り拠点の判定を想定した作りと読めます。

    external という真偽フィールドもあり、実測では9件すべて false でした。社外の置き場を区別するための項目です。

    置き場には6種類ある

    type は alm_stockroom_type への参照で、実測6件でした。


    画像


    画像

    説明が入っているのは3件だけです。On site は「顧客の敷地内の倉庫」、FSL は Forward Shipping Location、PUDO は Pick Up/Drop out location。Field Agent には「現場作業者と直接ひもづく仮想倉庫」という説明がありました。

    現場作業者が持ち歩く部品を「仮想の倉庫」として扱うのは面白い割り切りです。作業車のトランクも在庫の一種、と考えれば、部品の所在をすべて同じ仕組みで追えます。

    PUDO も現場感のある種類です。受け取りと引き渡しだけを行う窓口で、長く保管する場所ではありません。実データでも Pickup/Dropoff と名の付く拠点が5件あり、中央倉庫から送られた機器の受け渡し口として並んでいました。

    種類を分ける意味は、在庫の見え方を変えられることにあります。中央倉庫の在庫は「まだ配れる数」、受け渡し拠点の在庫は「もう相手が決まっている数」。同じ100件でも、どの種類の置き場にあるかで意味が変わります。種類を持たせておけば、この区別を条件1つで取り出せます。

    実データでは9件のうち7件が Warehouse、1件が Central Warehouse、残る1件は type が空でした。中央倉庫が1つあり、そこから各拠点へ配る形が読み取れます。

    資産の状態:在庫なのか、使用中なのか

    置き場の話をする前に、資産側の状態を数えておきます。alm_asset の install_status がそれです。


    画像


    画像

    選択肢は9つ用意されていました。On order / In stock / In transit / In use / Consumed / In maintenance / Retired / Missing / Build。買う前から捨てたあとまで、資産の一生をひととおり表せます。

    実データは4つの値に集中していました。Consumed が1,774件で最多、In use が944件、In stock が100件、Retired が1件。残る5つは0件です。

    ここで在庫として扱えるのは In stock の100件だけになります。実際、置き場が入っている資産を数えると 99件 でした。内訳は Southern California Warehouse が70件、San Diego South Warehouse が28件、San Diego North の受け渡し拠点が1件。

    使用中の資産は誰かの手元にあるので、置き場は空。消費済みの資産も同じです。置き場が入るのは「今、倉庫の棚にあるもの」だけ。この単純な規則が、2,819件と99件という数字の差に表れています。

    資産テーブルは3つに枝分かれしている

    在庫を数えるとき、どのテーブルを見ているかで数字が変わります。実測した件数はこうでした。

    • alm_asset(基底)… 2,819件

    • alm_consumable(消耗品)… 1,791件

    • alm_hardware(ハードウェア)… 904件

    • alm_license(ライセンス)… 77件

    消耗品が1,791件で、資産全体の6割を超えます。ケーブルやトナーのように「1本ずつ資産タグを貼らないもの」が、まとめてここに入る形です。

    消耗品の1行は「1個」ではなく「ある置き場にある、あるモデルのまとまり」を表します。だから置き場ごとに行が増え、件数が膨らみます。ハードウェアの904件は1台ずつの行なので、こちらは実際の台数に近い数字です。

    在庫の会話で「資産は何件ありますか」と聞かれたら、この3つのどれを指しているかを確かめたほうが安全です。基底テーブルで答えると、消耗品の行が大量に混ざった数字になります。

    置き場と住所は別のもの

    置き場(alm_stockroom)は location で cmn_location を参照しています。この2つは似ていますが、粒度が違います。

    住所(cmn_location)は建物や部屋の単位です。「615 North Bush Street, Santa Ana,CA」のような、地図で指せる場所を表します。置き場はその中にある棚やエリアの単位。同じ住所に「予備機の棚」と「返却待ちの棚」を別々に持つこともできます。

    分けておく利点は、住所が変わっても置き場の名前が変わらないことです。オフィス移転で住所を差し替えても、「San Francisco Warehouse」という置き場の名前とそこに紐づく資産はそのまま残ります。

    逆に、置き場を作らず住所だけで在庫を管理すると、棚の区別ができません。同じ建物の中で「使える在庫」と「修理待ち」を分けたくなったときに困ります。

    補充ルール:下限を割ったら何個発注するか

    alm_stock_rule は6件でした。


    画像


    画像

    1行が「このモデルを、この置き場で、何個を切ったら、何個仕入れるか」を表します。Alienware M14x なら Southern California Warehouse で下限10、発注数40。ラック製品は下限5で発注数10や15。

    補充元を表す restocking_option は、実測6件すべて Vendor でした。ベンダーから仕入れる設定です。公式ドキュメントによれば、別の置き場から移送して補う設定や、管理者へメールで知らせる設定も選べます。

    下限と発注数の組み合わせは、そのまま在庫方針になります。下限10・発注数40なら、切れる前にまとめて仕入れる。下限5・発注数10なら、こまめに少しずつ。回転の速さと保管場所の広さで、この2つの数字が決まります。

    自動実行の仕組みはこのPDIには入っていなかった

    補充ルールを定期的に評価するジョブがあるはずだと考え、スケジュールジョブを探しました。sysauto(スケジュールジョブの基底テーブル)を「Stock」で検索したところ、該当は 0件。この PDI には、補充ルールを自動で走らせるジョブが入っていませんでした。

    ルールの定義は入っているが、それを回す仕掛けは別に必要、ということです。実際の運用では、この部分がプラグインや追加設定で入ってきます。

    移送オーダー:どこからどこへ運ぶか

    alm_transfer_order は6件ありました。


    画像

    番号は TO で始まります。TO0000002 から TO0000006、そして TO0010001。stage を見ると、Delivered が3件、Shipment Preparation が2件、Draft が1件。Delivered の3件には type として Procurement(調達)が入っていました。

    From と To はどちらも置き場への参照です。実データの多くが「Southern California Warehouse から San Diego の各拠点へ」という向きで、中央倉庫から配る流れが見えます。

    stage は8段階ある

    stage は workflow 型のフィールドです。選択肢を実測すると8つありました。


    画像

    順に Draft / Requested / Shipment Preparation / Partially Shipped / Fully Shipped。さらに Received / Delivered / Cancelled と続きます。Partially Shipped(一部出荷)があるのは、1つのオーダーに複数の明細がぶら下がるからです。3行のうち2行だけ出荷した状態を、オーダー全体としてどう呼ぶか。その答えが「一部出荷」になります。

    明細側の stage は7つ。Partially / Fully Shipped の代わりに In Transit が入ります。1行ぶんの荷物は分割されないので、一部出荷という状態が要りません。オーダーと明細で段階の刻み方が違うのは、この事情によります。

    1件開いてみる:TO0000004

    Delivered になっている移送オーダーを開きます。


    画像

    From stockroom は Southern California Warehouse。From location は 615 North Bush Street, Santa Ana,CA でした。To stockroom は San Diego Border - Pickup/Dropoff。To location は 4492 Camino De La Plaza, San Ysidro,CA です。Requested date は 2021-10-04 06:39:09 で、Delivery by date は空でした。

    置き場と住所が両方ある点に注目してください。置き場は「棚の単位」、ロケーションは「住所の単位」。1つの住所に複数の置き場が入ることもあるので、両方を持っています。

    Drop Off というチェックボックスもありました。置き配のように、受け取り手を待たずに置いてくる運びかたを表す項目です。受け渡し拠点(PUDO)と組み合わせると、「窓口に置いてくるだけ」という運用を1つのチェックで表せます。

    Delivery by date が空だったのも見どころです。この移送には期限が設定されていませんでした。急ぎでない補充ならこれで足りますが、代替機の手配のように期限が要る移送では、ここに日付が入ります。入っていれば遅れの検出に使えます。

    明細に並ぶ4つの数量

    フォーム下部の Transfer Order Lines に、明細が1行ぶら下がっていました。TOL0000003、モデルは Asus G Series。数量の列が4つ並びます。Quantity requested が1、Quantity received が1、Quantity remaining が0、Quantity returned が0。

    要求した1個が届き、残りは0、返却も0。この4つを並べておけば、どの段階でいくつ止まっているかが1行で分かります。

    Stage の列はドットの並びで表示されていました。7つのうち6つめが緑になっており、Delivered まで進んだことを示します。明細の stage が7段階だったので、表示と選択肢の数が一致していました。

    明細が持つ他のフィールド

    辞書を見ると、明細には運用で効く項目がいくつも入っています。tracking_number(追跡番号)、ship_date(出荷日)、vendor(→core_company)、transferred_for(誰のための移送か)。返却まわりも return_from_tol と return_reason の2本があり、返す動きも記録できます。

    そして request_line が sc_req_item を参照していました。サービスカタログの申請1行から移送が起きる導線です。「PCを1台ください」という申請が、そのまま「倉庫からこの拠点へ1台送る」という移送に繋がる。実データでは値が入っていませんでしたが、参照の口は用意されています。

    返送も同じ仕組みで持つ

    移送オーダーには return_from_transfer_order というフィールドがあります。参照先は移送オーダー自身。つまり「この移送は、あの移送の返送である」という関係を、同じテーブルの中で持てます。

    明細側にも return_from_tol と return_reason の2本があり、返す理由まで残せます。行った先から戻ってくる動きを、別の仕組みではなく同じテーブルで扱う。往路と復路を同じ形で記録できるので、集計のときに特別扱いが要りません。

    故障品を修理拠点へ送り返す、貸出機を返却する。こうした逆向きの動きも移送オーダーとして起票すれば、在庫の増減が自動的に辻褄の合う形になります。

    数字で見たこの PDI の在庫

    実測を並べると、この PDI の在庫はこういう状態でした。

    • 置き場は9件。うち中央倉庫が1件、受け渡し拠点が5件

    • 在庫として棚にあるのは100件(In stock)。置き場が入っているのは99件

    • 補充ルールは6件で、すべてベンダーからの仕入れ

    • 移送オーダーは6件。3件が完了、2件が出荷準備、1件が下書き

    • 移送明細も6件。完了した3件は要求数と受領数が一致

    資産2,819件のうち、在庫として動いているのは100件ほど。残りは使用中か消費済みです。台帳の大半は「動かないもの」で、在庫管理が扱うのはその一部だけ。この比率は実際の現場でも近い形になります。

    実データを読むときに気をつける3点

    在庫の数え方はテーブルで変わる

    すでに触れたとおり、alm_asset と alm_hardware と alm_consumable では数字が違います。在庫を報告するときは、テーブル名と install_status の条件をセットで示すのが確実です。「In stock の hardware が何件」まで言えば誤解が起きません。

    stage は自動では進まない

    移送オーダーの stage は workflow 型で、8段階が定義されています。ただし段階を進めるのは、画面のボタンや裏側の処理です。レコードを直接書き換えて stage だけ変えると、関連する数量や資産の状態が置き去りになります。実データを触るときは、必ず画面の操作で進めるのが安全です。

    数量の4本は役割が違う

    quantity_requested は要求、quantity_received は受領、quantity_remaining は残り、quantity_returned は返却。この4本は独立した記録なので、足し引きの関係が常に成り立つとは限りません。返却が発生すると、受領と返却の両方に数字が入ります。「届いた数」を知りたいのか「今ある数」を知りたいのかで、見るべき列が変わります。

    どこから触るか

    • /alm_stockroom_list.do … 置き場の一覧

    • /alm_stockroom_type_list.do … 置き場の種類

    • /alm_asset_list.do?sysparm_query=GROUPBYinstall_status … 資産を状態で数える

    • /alm_stock_rule_list.do … 補充ルール

    • /alm_transfer_order_list.do … 移送オーダー

    • /alm_transfer_order_line_list.do … 移送明細

    資産の一覧で stockroom 列を出しておくと、在庫と使用中の違いが目で分かります。

    まとめ

    在庫管理は「場所」と「移動」と「状態」の3つに分かれていました。

    置き場が場所を持ち、6種類のタイプで役割を分ける。移送オーダーと明細が移動を持ち、8段階と7段階の stage で進み具合を刻む。資産の install_status が状態を持ち、在庫か使用中か消費済みかを表す。補充ルールはその手前にあって、動き出すきっかけを作ります。

    数量フィールドが4本に分かれている点と、オーダーと明細で段階の刻み方が違う点。この2つを押さえておくと、実データを見たときに迷いません。

    用語

    • 置き場(alm_stockroom) … 資産が今ある棚。住所(cmn_location)とは別の単位

    • 置き場の種類(alm_stockroom_type) … Warehouse / Central Warehouse / On site / FSL / PUDO / Field Agent

    • install_status … 資産の状態。In stock のときだけ置き場を持つ

    • 補充ルール(alm_stock_rule) … 下限(threshold)と発注数(order_size)と補充元

    • 移送オーダー(alm_transfer_order) … どこからどこへ運ぶかの単位。stage は8段階

    • 移送明細(alm_transfer_order_line) … 何を何個運ぶかの単位。stage は7段階、数量は4本

    • Drop Off … 受け取り手を待たずに置いてくる運びかたを表すチェック

    自分の環境で確認するときのURL

    • /alm_stockroom_list.do?sysparm_query=ORDERBYname(置き場9件)

    • /alm_stockroom_type_list.do(種類6件)

    • /alm_asset_list.do?sysparm_query=GROUPBYinstall_status(状態別の内訳)

    • /alm_stock_rule_list.do(補充ルール6件)

    • /alm_transfer_order_list.do(移送オーダー6件)

    • /alm_transfer_order.do?sys_id=...(TO0000004 のフォームと明細)

    実測の要点(再掲)

    • alm_stockroom 9件 / alm_stockroom_type 6件 / alm_stock_rule 6件 / alm_transfer_order 6件 / 明細6件

    • alm_asset 2,819件の内訳は Consumed 1,774 / In use 944 / In stock 100 / Retired 1

    • 置き場が入っている資産は99件(Southern California 70 / San Diego South 28 / San Diego North 1)

    • 補充ルールは6件すべて restocking_option=Vendor。threshold は5または10、order_size は10〜50

    • stage は移送オーダーが8段階、移送明細が7段階。TO0000004 は Delivered、明細は要求1・受領1

    • sysauto を「Stock」で検索した結果は0件。補充ルールを回すジョブはこの PDI に無い

    検証範囲とおことわり

    • 件数・項目・選択肢は PDI(Zurich / OOTB)の実測です。本番環境の設定・データとは異なります。

    • 補充ルールが実際に発注や移送を起こす動作は未実行です。設定値の確認までにとどめました。

    • 移送オーダーの stage を自分で進める操作も行っていません。既存データの値を読んだだけです。

    • request_line(sc_req_item 参照)によるカタログ申請との連携は、実データに値が無く未検証です。

    • Inventory 系はライセンスやプラグインの前提により、環境ごとに使える範囲が変わります。

    参考リンク

     
     
    ServiceNowのPDI(Personal Developer Instance)を実機で観察して、Noteに記事を書いています 実装・運用・教育の現場視点で淡々と記録中です リクエストがあればその記事も書きます 個人の観察日記です

    あなたへのおすすめ