0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ServiceNow MCPの活用事例] Software Asset Managementのスケジュールジョブから処理フローを作成してみてと無茶振りしてみた

0
Last updated at Posted at 2026-06-20

はじめに

  • AI(Claude)に対して、「ServiceNowのSoftware Asset Management(SAM)のスケジュールジョブをPDIから取得し、代表的な機能の処理フローを作成してみて」とお願いしてみました。
  • もちろん、SAMの機能はスケジュールジョブだけで構成されているわけではないので無茶振りはありますが、それを踏まえての結果です。
  • 結論から言いますと、ポイントは掴めている感じでした。何もするにも、ソフトウェア正規化が大事だと。
    (おそらくServieNowマニュアルやコミュニティの知識で保管しているでしょう)

Claudeの実行結果
Screenshot 2026-06-20 at 16.29.33.png

調査結果

SAM 中核ジョブ 処理フロー(★★★)

SAM のライセンス計算は、以下の3ジョブが 順番に 動くことで成立する。
前段の出力が次段の入力になる「データパイプライン」を形成している。

[検出データ] → ① 正規化 → ② ソフトウェアモデル突合 → ③ ライセンス照合 → [ELP/コンプライアンス]

テーブル名は SAM Pro のバージョンにより差異あり。代表的なものを記載。


① SAM - Normalize discovery models using content library rules

  • 種別: daily (08:00) / スコープ: Global
  • 目的: Discovery・SCCM 等が収集した「生の検出ソフトウェア」を、ServiceNow
    コンテンツライブラリの正規化ルールに照合し、標準的な publisher / product /
    version / edition に整える。以降の全計算の前提

入力

  • 未正規化の検出モデル samp_sw_discovery_model(生の publisher/title/version 文字列)
  • コンテンツライブラリ正規化ルール(SaaS 提供の normalization content)

処理

  1. 正規化ステータスが未処理の検出モデルを抽出
  2. 生文字列(publisher 名・製品名・バージョン)をコンテンツ規則と突合
  3. 一致 → 正規化済みの publisher/product/version/edition を割当
  4. 正規化ステータスを更新(normalized / not found)
  5. 未一致は 正規化候補(suggestion) として残す
    SAM - Find Normalization Suggestions が後で拾う

出力

  • 正規化済み検出モデル(ソフトウェアモデルと突合可能な状態)

② SAM - Discovery Model to Software Model matching

  • 種別: weekly (Tue 10:00) / スコープ: Global
  • 目的: 正規化済みの検出モデルを、ライセンス計算の単位である
    Software Model(製品モデル)に紐づける。

入力

  • ①の出力(正規化済み検出モデル)
  • Software Model cmdb_software_product_model

処理

  1. 正規化された publisher/product/version/edition をキーに Software Model を検索
  2. 一致する Software Model に検出モデルを関連付け(多対多)
  3. Software Model が存在しない場合は新規作成 or サジェスト
  4. 検出モデルに紐づく インストール samp_sw_install が、
    Software Model 経由で「ライセンス消費」として認識される

出力

  • Software Model に紐づいたインストール群(=消費側の集計対象)

③ SAM - Software License Reconciliation

  • 種別: weekly (Mon 10:00) / スコープ: Software Asset Management
  • 目的: SAM の心臓部。製品ごとに「保有権利(entitlement)」と
    「消費(install/usage)」を突合し、ELP(実効ライセンスポジション)
    コンプライアンス状態を算出する。

入力

  • 権利 alm_license(購入したライセンス・数量・メトリック)
  • 消費(②の出力: Software Model に紐づく install)
  • 使用状況 samp_sw_usage(SAM - Update Software Usage の出力)
  • ライセンスメトリック(per device / per core / PVU / named user 等)
  • 割当(allocations)、アップ/ダウングレード権、スイート定義

処理

  1. 製品ごとに権利数(rights)を集計
  2. メトリックに応じた消費数(consumption)を算出
    • per-core → コア/CPU 数、per-device → インストール数 など
  3. アップグレード/ダウングレード権・スイート展開・割当を適用
  4. rights − consumption = コンプライアンスポジション
    • 正(余剰) = 未使用 → 回収候補へ
    • 負(不足) = コンプライアンス違反(購入要)
  5. alm_license のコンプライアンス状態/数値を更新
  6. 余剰分は SAM - Identifying New Reclamation Candidates に連携

出力

  • ELP(実効ライセンスポジション)
  • 製品別コンプライアンス状態(compliant / 違反 / 余剰)
  • リクラメーション(回収)候補

パイプライン全体の依存関係

ジョブ 依存(前提) 主な出力先
Normalize discovery models コンテンツライブラリ
Discovery→Software Model matching ①の正規化済みモデル ③(消費側)
Software License Reconciliation ②の install + alm_license 権利 + usage ELP / 回収候補

ポイント: ③だけ動かしても、①②が正しく回っていなければ消費数が不正確になり、
ELP が信頼できない。トラブルシュート時は ①→②→③ の順でデータ健全性を確認する。


補助ジョブ(★★☆)の接続

中核3ジョブの各段に、以下の補助ジョブが効く(止まっても ELP は壊れないが鮮度・精度が落ちる)。

補助ジョブ 種別 役割
① 正規化 Apply latest content changes periodically 正規化コンテンツを最新化(精度の素)
① 正規化 Find Normalization Suggestions weekly 未一致を正規化候補として救済
① 正規化 Deduplicate Install Table daily install 重複排除(数え過ぎ防止)
② 突合 Get install count for software model weekly モデル別の消費数を確定し ③ へ渡す
③ 照合 Update Software Usage daily per-user/per-device 判定の使用実績
③ 出力後 Identifying New Reclamation Candidates monthly 余剰ライセンスの回収候補抽出
③ 出力後 Create Calculated Software Lifecycles weekly EOL/サポート終了を算出

図解ファイル

  • 中核フロー
    sam_core_jobs_flow.jpg

  • 拡張フロー(補助ジョブ込み)
    sam_extended_pipeline_flow.jpg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?