メインコンテンツへスキップ

CAB Workbench(/cab)の入口はカレンダー1枚:ウィジェットも1個だけ


    ServiceNow のポータルというと、社員が申請やナレッジ検索に使う「セルフサービス画面」を思い浮かべる方が多いと思います。ですが、同じポータルの仕組み(sp_portal)の上には、利用者向けではないポータルもいくつか載っています。その一つが CAB Workbench(/cab)です。

    この記事は、CAB Workbench を PDI(個人用の検証インスタンス)の初期状態で実際に開いた記録です。sp_portal の全設定・テーマ・メニュー・ページ・ウィジェット・裏側のテーブルまで、REST と実画面で読み解く開発者向けリファレンスになっています。前半で「開くと何が出て、どういう画面なのか」を押さえ、後半で「その見た目を裏で決めている設定値・テーマ・ウィジェットの周辺機能」を実測ベースで並べます。この記事だけを見れば /cab を『設定・開発できる』レベルまで把握できることがゴールです。CAB 会議の運営手順や承認ワークフローの実行時挙動そのものは変更管理側の話なので、本記事では扱わず、末尾で公式ドキュメントへ案内します。

    確認した環境:ServiceNow PDI(Personal Developer Instance)/ Zurich(ズーリッヒ)リリース/ OOTB(初期設定のまま)/ 確認日 2026-07-11。本番環境やカスタマイズ済みの環境では、見た目・件数・表示される項目が異なる場合があります。ここに書いた数値・状態は、このPDIで実際に見えた・REST で読み取れたものだけを記載しています。


    このポータルは何か

    CAB Workbench は、CAB(Change Advisory Board=変更諮問委員会)の会議を運営するためのポータルです。CAB とは、リスクの大きい変更を実施前に関係者で集まって審議・承認する会議体を指します。「この変更をこの日程で本当に入れてよいか」を人が集まって判断する場で、CAB Workbench はそのスケジュールと審議対象を可視化するポータル面にあたります。

    押さえたいのは、これがエンドユーザーのセルフサービス画面ではなく、変更管理の実務者が使う画面という点です。ポータルの定義は他ポータルと同じ sp_portal テーブルに1レコードとして入っています。ただし Employee Center(/esc)や Service Portal(/sp)とは、設定値の中身が明確に違いました。カタログもナレッジも紐づかず、AI Search も無効で、ヘッダメニューの項目も0件です。「申請・検索の入口」を構成する要素が、そもそも設定されていません。

    ポータル=1枚のHTMLではなく複数テーブルのレコードの組み合わせでできている、という内部構造については別記事で扱っています。参照先はポータル1画面は複数テーブルの組み合わせ(sp_portal) です。本記事はその枠組みを前提に、CAB Workbench の設定値・テーマ・ウィジェットと、それぞれがどの画面につながるかを並べます。

    用語メモ:CAB と CAB Workbench

    • CAB(変更諮問委員会):変更のリスクを審議する会議体そのもの。人と役割の話です。

    • CAB Workbench:その会議のスケジュールと審議対象を画面に出す /cab のポータル。今回のリファレンス対象はこちらです。

    • cab_meeting / cab_agenda_item / cab_definition:会議・審議項目・CAB定義を保持する裏側のテーブル群。詳細は後半で扱います。


    見た目:入口はカレンダー

    実際に /cab を開くと、次の画面が表示されました。


    画像

    この画面の構成要素は、濃紺のヘッダ・カレンダー本体・表示切替・期間の移動ボタンの4つでした。

    • 濃紺のヘッダ:CAB Workbench 専用テーマ(CAB Workbench - Default)による配色です。左に servicenow ロゴ、右にログインユーザー(このPDIでは System Administrator)が出ます。Service Portal の Coral テーマとは配色もヘッダ構成も別物でした。

    • カレンダー本体:中央に「July 2026」の月間カレンダーが大きく表示されます。確認日(7/11)にあたる当日のマスが、薄く色づいてハイライトされていました。

    • 表示切替:右上に Day / Week / Month のボタンがあり、日/週/月で表示を切り替えられます。今回は Month が選択された状態です。

    • 期間の移動:左上に Today(今日へ戻る)と、◀ ▶(前後の月へ移動)のボタンが並びます。

    この画面で押さえておきたいのは、CAB Workbench の入口が「一覧」でも「フォーム」でもなく「カレンダー」であることです。CAB は定期的に開催される会議なので、まず日程を俯瞰できるカレンダーが起点になっています。ヘッダにメニュー導線が無いのも、この画面が「日程を見る」ことに特化しているためだと読み取れます。

    なお、上のカレンダー(July 2026)には予定が一つも表示されていません。一見すると会議が無いように見えますが、後述のとおり裏側のテーブルには会議データが登録されていました。7月が空だったのは、登録済みの会議が別の月にあったからです。


    基本設定:セルフサービス要素は空

    ここからがリファレンス部分です。/cab の見た目と挙動を決めているのは sp_portal レコードの設定値です。REST で読み取った項目を、意味とあわせて並べます。


    画像

    押さえどころは次のとおりです。

    • 入口とページ差し替え:homepage=cab_calendar(最初に開くカレンダー)、login_page=login(未ログイン時)、notfound_page=404。ページを丸ごと差し替えたいときはここを変えます。

    • セルフサービス要素が空:sc_catalog(カタログ)・kb_knowledge_base(ナレッジ)・kb_knowledge_page はいずれも未設定でした。Service Portal ではここに Service Catalog や IT ナレッジが入っていましたが、CAB Workbench には申請・検索の入口がありません。用途の違いが設定値にそのまま出ています。

    • 検索:enable_ais=false。AI Search を使わない設定です。カレンダーを見る画面なので、全文検索の導線を持ちません。

    • メニュー:sp_rectangle_menu=CAB Workbench - Menu への参照はありました。ただし後述のとおり、中身(sp_rectangle_menu_item)は0件でした。

    • その他:default=false(既定ポータルではない)、enable_favorites=false、rtl_enabled=false。enable_embeddables=false、hide_portal_name=false も同様に false です。logo にはヘッダ用の画像レコード(*.iix)が紐づいていました。

    表で「未設定」と書いた項目は、REST で空だったものです。空でも動くのは、ServiceNow 側が既定の挙動へフォールバックするためで、明示したいときにだけ値を入れる位置づけになります。配色を担う theme の中身は、次々節のデザイン設定で掘り下げます。


    画面遷移:/cab からどこへ行けるか

    /cab の CAB Workbench は、sp_portal の設定を通じて数ページへ枝分かれし、ホームのカレンダーは裏側の CAB テーブル群とつながります。どの設定・どのウィジェットが、どのページ・どのデータへ到達するかを一枚にまとめました。


    画像

    読み方は次のとおりです。

    • ポータル本体(sp_portal)が直接指すページは3つ。homepage=cab_calendar(ホーム=カレンダー)、login_page=login(ログイン)、notfound_page=404(Not Found)です。

    • ヘッダメニュー(sp_rectangle_menu=CAB Workbench - Menu)は参照として設定されているものの、実際のメニュー項目は0件でした。図では点線で示しています。Service Portal のように Knowledge / Catalog / Requests といった導線がヘッダに並ぶ構成ではありません。

    • ホーム(cab_calendar)には CAB Workbench - Meetings Calendar というウィジェットが1つだけ載っています。これが CAB の会議(cab_meeting)を時間軸に並べて見せます。その裏で cab_definition→cab_meeting→cab_agenda_item→change_request とデータがつながります(テーブル間の参照方向は後述)。

    Service Portal 系のページ遷移は、URL でいうと /cab?id=<ページのid> という形をとります。ホームは /cab?id=cab_calendar、ログインは /cab?id=login です。この id が sp_page レコードの識別子で、ポータル設定は「どの id のページを開くか」を指定している、という関係になります。


    デザイン設定の詳細(CAB Workbench - Default テーマ)

    /cab の濃紺の見た目を担っているのは、sp_portal の theme が指す CAB Workbench - Default(sp_theme の1レコード)です。設定表の1行で終わらせず、テーマ側の項目を REST で開いて中身を並べます。


    画像

    読みどころは次の3点です。

    • ヘッダは標準・固定:header=Stock Header で、ヘッダは標準ヘッダウィジェットを流用しています。navbar_fixed=true なのでスクロールしてもヘッダが上部に貼り付きます。一方 footer は未設定、footer_fixed=false で、フッターは持ちません。

    • 濃紺配色は SCSS 変数で決まる:css_variables に $navbar-inverse-bg: #293e40 が入っており、これがヘッダの濃紺の正体です。あわせて $sp-logo-margin-x(ロゴの左右余白)や $navbar-inverse-link-color(ナビリンクの色)なども定義されていました。配色を変えたいときに触るのは、ポータル設定ではなくこのテーマの変数側になります。

    • ダーク非対応・Now Experience 未連携:dark_theme は未設定、matching_now_experience_theme も未設定でした。ダークモードや Next Experience テーマとの対応づけは、このPDIの初期状態では入っていません。icon(ファビコン等)も未設定で、logo だけが紐づいていました。

    テーマの各 SCSS 変数が最終的にどの要素へ効くか(コンパイル後のCSS)までは今回の読み取りの範囲外です。ただし「濃紺ヘッダ=$navbar-inverse-bg の #293e40 」という対応は実測できました。ここが Service Portal の Coral テーマとの見た目の違いを生んでいます。


    関連するウィジェット

    CAB Workbench で「部品を変えたい」ときの対象は、ほぼウィジェットに集約されます。ホームと各ページに載っているウィジェットを実測しました。

    ホームのウィジェット構成

    ホーム(cab_calendar ページ)は、Service Portal のホームが16配置だったのに対し、シンプルな1配置でした。


    画像

    ホームページのウィジェットは Container 1 に1つだけ置かれています。その中身は CAB Workbench - Meetings Calendar(widget id=cab-meetings-calendar)です。個数は1件のみでした。実画面の月間カレンダーは、このウィジェット1つが描いています。名称と id から、CAB の会議(cab_meeting)を読み取ってカレンダー上に並べる役割です。実画面で会議が見えなかったのは、登録済みの会議が表示中の月(7月)に無かったためで、ウィジェットが機能していないわけではありません。

    各ページのウィジェット

    ホーム以外の遷移先ページにも、それぞれウィジェットが載っています。ページごとの中身を実測しました。


    画像
    • cab_calendar(ホーム):CAB Workbench - Meetings Calendar が1件。カレンダー1枚で構成された画面です。

    • login(ログイン):Login ウィジェットが1件。未ログイン時に案内される最小構成のログインページで、Service Portal の landing にあった言語切替などは載っていませんでした。

    • 404(Not Found):HTML と Breakout Game の2件。これは Service Portal の 404 と同じ構成で、ページが無いときにブロック崩し風のミニゲームが出る OOTB の遊び心がここにも共有されていました。ポータルが違っても 404 ページの中身は共通のものが使われている、と読み取れます。

    カスタマイズの起点は、実質このカレンダーウィジェット1つです。ヒーローや導線タイルといった Service Portal 的な部品は、CAB Workbench には設定上存在しません。


    ヘッダメニュー等の設定(項目0件)

    ヘッダに並ぶメニューは sp_rectangle_menu で定義され、各項目は sp_rectangle_menu_item に入ります。CAB Workbench では、この項目を order 順に読み取った結果、メニュー項目は0件でした。


    画像

    つまり、ポータル設定 sp_rectangle_menu には「CAB Workbench - Menu」というメニュー定義への参照があります。ただし、その定義にぶら下がる項目(リンク)は1つも登録されていません。実画面でもヘッダにナビゲーションのリンクは並ばず、ロゴとログインユーザーだけでした。

    Service Portal では同じ位置に Knowledge / Catalog / Requests / Approvals / System Status など6項目が定義されていました。CAB Workbench にそれが無いのは、この画面での移動が「ヘッダメニュー」ではなく「カレンダー上のクリック」で行われる想定だからだと読み取れます。メニューを足したい場合は、この「CAB Workbench - Menu」に sp_rectangle_menu_item を追加すればヘッダに項目を出せる、という余地は残っています。


    ビジネスルール・スクリプト等の周辺機能

    見た目の裏側で動くコードとデータへ進みます。CAB Workbench の周辺機能は、ほぼカレンダーウィジェットの内部処理と、それがつなぐ CAB テーブル群に集約されます。

    カレンダーウィジェットの周辺機能

    先ほどの cab-meetings-calendar ウィジェットが、どんなコードと依存を持つかを実測しました。


    画像
    • 公開範囲:public=false で、未ログインでは表示されません。roles は空で、特定ロールへの制限はなく、ログインすれば表示される設定でした。

    • 保持するコード:server(サーバスクリプト)・client(クライアントスクリプト)・options・css・html を持つ、いわゆるフル構成のウィジェットです。Service Portal のウィジェットには、よくある作りがあります。サーバスクリプトが data / input を介してクライアントへ値を渡す(GlideSPScriptable 系のサーバ API を使う)作りです。このウィジェットも server と client の両方を備えています。

    • 依存(dependencies):CAB Workbench - Calendar と CAB Workbench の2つを読み込みます。Service Portal の依存レコードは、Angular の Provider や Template・追加の JS/CSS を束ねる仕組みです。カレンダー描画に必要な部品を、ここで読み込んでいるという位置づけになります。

    サーバスクリプトが具体的にどのテーブルへどんなクエリを投げるか、クライアント側の Angular コントローラが何をするか、依存が束ねる個別のコード内容までは今回の読み取りの範囲外です。ここでは「public/roles・保持するコードの種類・依存の本数」という外形を実測した、という整理にとどめます。

    CAB 関連テーブル

    カレンダーが見せる会議は、CAB 系のテーブルに入っていました。ウィジェットが最終的に読むデータ側です。


    画像
    • cab_definition(1件):CAB そのものの定義です。今回は「Network CAB」という1つの CAB(タイプは Normal、有効)が登録されていました。

    • cab_meeting(6件):個々の開催回です。6件すべて「Network CAB」で、状態は Pending(保留=これから開催)でした。開始日時を読み取ると、2026年2月10日・2月24日・3月10日・3月24日・4月7日・4月21日と、隔週の火曜日に並んでいました。カレンダーが7月に空だったのは、これらが2〜4月に登録されていたためです。◀ で過去の月へ戻れば、Network CAB の開催回が並ぶはずです。

    • cab_agenda_item(60件):各会議の審議項目です。1項目が「どの会議で、どの変更(change)を審議するか」を表します。実測では cab_meeting(会議)と task(変更=CHG… の番号)を参照しており、変更管理とここでつながっていました。

    • change_request(103件):参考として、このインスタンスの変更要求は全体で103件ありました。そのうち CAB の審議対象として並べられているのが、上記の agenda item です。

    これらテーブル上のビジネスルールやフロー(会議確定時の通知、承認記録の書き戻しなど)は変更管理アプリ側の実装で、本記事のポータル読み取りの範囲外です。カレンダー→会議→アジェンダ→変更、というデータの連なりが cab_agenda_item を経由して成立している、というつながりだけを実測しました。


    開発者の勘所とまとめ

    開発者の勘所

    /cab を設定・開発する観点で、押さえておくと迷いにくいポイントを挙げます。

    • ページ遷移は ?id=<page> 形式。ポータル設定が指すのは sp_page の id(cab_calendar / login / 404)です。URL を組み立てるときも /cab?id=cab_calendar になります。

    • 配色はテーマの SCSS 変数。ヘッダの濃紺は theme(CAB Workbench - Default)の css_variables にある $navbar-inverse-bg: #293e40 が決めています。ダーク対応を足すなら dark_theme(このPDIは未設定)に別テーマを割り当てる形です。

    • ホームはカレンダーウィジェット1枚。多数の配置が積まれた画面ではなく、cab-meetings-calendar 1つで成り立っています。カスタマイズの起点はこのウィジェットで、public=false・roles空・server/client/css/html/options を持つフル構成でした。

    • ヘッダメニューは空。移動はメニューではなくカレンダー上の操作で行う想定です。項目を出したいときは「CAB Workbench - Menu」に sp_rectangle_menu_item を足します。

    • 変更(change)との接続は cab_agenda_item 経由。カレンダー→会議→アジェンダ→変更というデータの連なりで、cab_agenda_item が cab_meeting と task(change)を結んでいます。CAB Workbench が「変更管理の審議の場」である根拠がここにあります。

    まとめ

    • /cab の CAB Workbench は、sp_portal に登録された変更管理実務者向けのポータル。default=false、theme=CAB Workbench - Default、homepage=cab_calendar。login_page=login、notfound_page=404。

    • Service Portal と違い、sc_catalog / kb_knowledge_base / kb_knowledge_page は未設定です。enable_ais=false、ヘッダメニュー(sp_rectangle_menu_item)は0件で、申請・検索の入口を持たない構成でした。

    • デザインは CAB Workbench - Default テーマが担っています。中身は Stock Header・navbar_fixed=true・$navbar-inverse-bg: #293e40 の濃紺・dark_theme 未設定でした。

    • ホーム(cab_calendar)は CAB Workbench - Meetings Calendar(id=cab-meetings-calendar)1件で構成。public=false・roles空・server/client/css/html/options を持ち、依存は2本。login は Login 1件、404 は HTML+Breakout Game の2件。

    • 裏側には CAB データがあります。件数は cab_definition 1件(Network CAB)/cab_meeting 6件(2〜4月・隔週火曜・Pending)です。あわせて cab_agenda_item 60件(変更を参照)/change_request 103件でした。カレンダーが7月に空だったのは、会議が2〜4月にあったためでした。

    同じ sp_portal の仕組みの上に載っていても、用途は異なります。Employee Center(/esc)や Service Portal(/sp)は「社員が申請・検索・状況確認をする」セルフサービスでした。一方 CAB Workbench は「実務者が変更審議の日程と対象を管理する」画面です。設定・テーマ・ウィジェットのどの面でも、カレンダー1枚に絞り込まれていました。

    関連記事

    検証範囲とおことわり

    • 撮影・確認はすべて System Administrator(管理者)ログインでの見た目です。ロールやライセンスが異なるユーザーでは、表示や件数が変わる可能性があります。

    • カレンダーウィジェット(cab-meetings-calendar)について、本記事の範囲外にした項目があります。サーバ/クライアントスクリプトが内部で何をするか、依存が束ねる個別コード、会議クリック時の遷移先、会議の進行操作(出欠・審議・承認/却下)です。持つコードの種類・依存の本数・public/roles という外形のみ実測しました。

    • テーマの SCSS 変数がコンパイル後にどの要素へ効くか、各変数の全量は範囲外です。濃紺ヘッダ=$navbar-inverse-bg: #293e40 の対応のみ確認しています。

    • ヘッダメニューが0件だった点は REST の読み取り結果です。レスポンシブや権限による非表示ではなく、sp_rectangle_menu_item 自体が無い状態でした。

    • 数値・状態はこのPDIの実測値であり、環境によって異なります。

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

    CAB Workbench が載っているポータルの仕組み(sp_portal → sp_page → sp_widget のつながり)そのものは、別記事で整理しています。参照先はポータル1画面は複数テーブルの組み合わせ(sp_portal) です。会議の運営手順や承認ワークフローは、上記の Change Management 系ドキュメントを参照してください。

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

    あなたへのおすすめ