背景
Service Operations Workspace(以降、記事内ではSOWと表記します)のデフォルトのHome画面(Landing Page)は、OOTBの「Overview」ダッシュボードが表示されるようになっています。
↑ ここのことです ↑
プルダウンからほかの閲覧可能なダッシュボードも選択、表示できるのですが、

任意のダッシュボードを選択した後にインスタンスからログアウトすると、次にログインしたときは「Overview」に戻ってしまいます。(嘘だと思う人はやってみてくださいw)
同一セッション内であれば、SOWから別ぺージに行って、SOWに戻ってきてもユーザーが最後に選択したダッシュボードが表示されます。これはUser Preferenceのcom.snc.par.dashboards.ui.preferencesで保持しているためです。
このPreferneceはログアウトしても生きているのですが、LandingページのExperienceのDashboard ControllerのDefault Dashboard SysIDにOverviewダッシュボードのsysidが設定されているため、ログイン時にOverviewダッシュボードが優先されている、という仕組みでした。
これが地味に不便で、OverviewはOOTBで最低限の情報はあるけど、せっかくチームで作成した業務に合わせたダッシュボードがあるならそれを使いたいし、複数使うならOverviewに戻るのではなくせめて最後に見ていたものであってほしい、などの需要が考えられます(実際にありました)
そこで調査、実装したものがあるので今回紹介します。
素朴な疑問-OOTB Overviewを非アクティブにすればいいのでは?
…って思うじゃないですか?
結論、私が検証した範囲では推奨しません。
冒頭と被りますが、「LandingページのExperienceのDashboard ControllerのDefault Dashboard SysIDにOverviewダッシュボードのsysidが設定されている」がおそらくけっこうやっかいで、ダッシュボード側で非アクティブにするだけだと、Landingページ側の表示が崩れてしまう事象が発生しました。(*)
後述しますが、Dashboard ControllerのDashboard SysIDは結局今回の方法で設定変更箇所でもあるので、だったらOverviewダッシュボード自体は論理的にも生かしたまま(変に他のページに影響与えていやなので)、ユーザー体験を向上させるように設定しようという判断です。
(*)私がぱっと検証しただけなので、知見をお持ちの方がいたらぜひ教えていただきたい
前提・要件
「OOTB Overviewダッシュボードは使わない/使いたくない」ユーザーに対して
1.初回ログイン時は OOTB デフォルトの Overview ダッシュボードでよい
使わないが、前述の理由もあり許容。
基本ServiceNow使い続けるとして、最初の1回だけ任意のダッシュボード選べばいいよね、というもの)
2.ユーザーが SOW 上で最後に見たダッシュボードを、次回ログインでも復元する
3.「最後に見たダッシュボード」が無い(初回)場合は OOTB Overview 表示でよい
こういった前提と要件で、具体的な手順に入っていきます。
設定手順
では早速設定していきましょう。
1.OOTB Overview dashboardのsysidをメモる(後で使う)
いろんな取得方法があると思いますがキャプチャはPAR Dashboardのリストで確認したときの例

後で使うのでメモ帳などのテキストエディタなどに控えておいてください。
2.Landingページを複製
UI Builder>Experience>Service Operations Workspace

Service desk landing page PAR SNCの右側のメニューから「Duplicate Variant」を選択します。

3.OOTB Landingページを非アクティブ
Activeのチェックを外してSave

(ここは運用で使う前にできれば順不同です)
4.複製した新LandingをUI Builderで開く
4-1.コンポーネントのプリセットを解除する
解除しないと各種プロパティがread-onlyでバインド不可になるため、解除します
こういうこともするので前述手順のとおり、ページはDuplicate推奨です。
左ペインで「Dashboard 1」を選択し、右ペイン上の「Dashboard data broker preset」をクリックします。

「Remove current preset」をクリックします

4-2.Transformを追加 (Data Broker Server Scriptの作成)
左下のData and scriptsの+ボタン>Data resource

UI Builderから別タブでレコード作成フォームになります。

ScriptとOutput Schema全貌は以下
Script
function transform(input) {
var dashboardId = '';
// Get user's last dashboard preference
var gr = new GlideRecord('sys_user_preference');
gr.addQuery('user', gs.getUserID());
gr.addQuery('name', 'com.snc.par.dashboards.ui.preferences');
gr.orderByDesc('sys_updated_on');
gr.setLimit(1);
gr.query();
if (gr.next()) {
try {
var raw = gr.getValue('value') || '{}';
var parsed = JSON.parse(raw);
if (parsed.recent) {
var recentArr = JSON.parse(parsed.recent);
if (recentArr[0] && recentArr[0].sys_id) {
dashboardId = recentArr[0].sys_id;
}
}
} catch (e) {
gs.warn('lastDashboardPref parse error: ' + e);
}
}
// Fallback to default if none (REQ-1 / REQ-3)
if (!dashboardId) {
dashboardId = 'f671f450477bca5096bc6095d36d43d7'; // ★手順1 で取得した OOTB Overview の sys_id に置換
}
return {"value": dashboardId.toString()};
}
Output schema
[
{
"name": "value",
"label": "Value",
"description": "value",
"readOnly": false,
"fieldType": "json"
}
]
作成したスクリプトのsysidを次の手順で使うのでメモって下さい。

4-3.ux_data_broker ACLの作成
UI Builder/Workspace/Next Experienceで使う「Data Resource/Data Broker」を実行できるユーザーを制御するために必要なux_data_brokerタイプのACLを作ります。
※ここもUI Builder外の作業です。ACL作成になるのでsecurity_adminを持っているユーザーで作成してください。
Type:ux_data_broker
Operation:Execute
Decision type:Allow if
Name:右の青三角アイコンをクリック → text入力に切替 → 4-2で取得したスクリプトのsys_idを貼り付け
Role:SOW利用者のロールを設定
4-4.作成したData Broker Server Scriptをページのデータリソースとして追加する
※UI Builderに戻ってきました
左下のData resourcesの+Add Newをクリック

先ほど作成したData Broker Server Scriptを選択し、Addを押す

4-5.DashboardコンポーネントのDefault Dashboardをバインドする
右ペインのDefault Dashboard欄の円柱マークをクリックします

下記キャプチャのようにたどって、「lastDashboardPref 1」のValueを「@data.lastdashboardpref_1.value.value」とし、Applyをクリックします。

lastdashboardpref の部分は前述の手順で追加した Data resource の名前です。 lastdashboardpref_1 等の末尾連番が付く場合があるので、実際にツリーに表示されている名前を使ってください。
末尾の .value.value は「Output schemaで定義したvalueフィールド」→「Transformのreturn valueのvalue プロパティ」を辿る構造です。Output schemaを変えた場合はバインド式も変わります。
4-6.Dashboard ControllerのdashboardSysIdもバインドする
4-5と同様に、左下Dashboard Controllerの「dashboardSysId」も「@data.lastdashboardpref_1.value.value」をセットしてください。

4-7.Landingページを保存(設定おわり)
これで設定完了です
動作検証
ログアウトしてる状態かどうか、がキャプチャだとなんとも判定しにくいと思ったので、動画をXにあげました!
ログイン→Overviewダッシュボード→ダッシュボード切替
→ログアウト→ログイン→切り替えたダッシュボードになってる
を撮ってます
(途中で関係ないページに行ったりもしています)
まとめ
やってみてわかったこととしては、
・PreferenceあるのになんでOverviewに戻んねん
・もっと簡単に設定させてください(UI Builder関連の手順が、というより、Overview回避を)
・OOTBも良いところはあるが、ユーザー体験ももちろん大事
・コミュニティの回答は非表示リプライもロードしよう(後述)
ですね。
なんかもっと簡単な方法ありそうだけど…(知ってる方ぜひ教えてください)
同じ悩みを持っただれかがこの記事が参考になればいいなと思いつつ、
今後の製品アップデートでこの記事自体が必要なくなることもひそかに祈ります!
それでは!
参考サイトリンク
・UI Builder - Get and update data by Data Broker
・Default Dashboard in Service Operations Workspace
※こちらのコミュニティの解決策で投稿されている「12-10-2025 10:16 AM」の回答を参考にしています。
最初に表示される解答だけでなく「Load more replies」を押してほかの返信も見ていくことでたどり着けました!(粘った甲斐があった)
↓その解答ピンポイントのリンク↓









