インシデントテーブルを例に、assigned toの本人、Assignment groupのメンバーいずれかにのみレコードの閲覧を許可するACLの例※デフォルトの余計なACLはいったん無効化した状態を前提とする。
アラフォーSEが自由に自分の業務周りや趣味周りの各種IT系技術情報を発信するブログ。何年も前:OSS色強め→ちょっと前:ServiceNow色強め→今後Powershell、AWS、VBA主になりそう
2023年4月8日土曜日
2021年4月12日月曜日
同姓同名のユーザ(あるいは同一文字列で表現される)の情報をルックアップ元のテーブルから正しく識別してインポートする
Servicenowのインポート機能は強力なのだが、時に躓くことがある。
この例も実際自分が躓いた例。Type がReferenceになっていて同名レコードが元テーブル(参照先テーブル)に存在するフィールドの正しいインポート方法。
例えばであるがsys_userに「山田 太郎」という名前の人物が2名いる。
例えばこんなケース。
yamada.taro1とyamada.taro2は「User ID」や「Sys_ID」では区別ができるので、sys_userテーブルに対するインポートや更新では特に問題になる事はない。
問題になるのはこの同名のエントリをルックアップしているテーブルのインポートを行うときである。
例えばグループとユーザの関係性を定義している、sys_user_grmemberテーブルを見ると次のようになっている。
Help Deskグループに山田 太郎が二人とも所属している場合こうなる。
インポート機能を使った事がある方はお分かりと思うが、このようなデータをインポートしようとして、テーブルをエクスポートしたり、更新インポート用のエクセルフォーマットを出力したとしても、次のようなフィールドが得られるだけである。
要するにこのままでは、「山田 太郎」がyamada.taro1とyamada.taro2のいずれなのかを区別して扱う事が出来ない。
当然ながらこのようなデータをインポートしても、1と2どちらの山田太郎が選択されたデータが出来上がるかが不明である(ちゃんと検証していないがSys_IDが若い方が勝手に選ばれていた様な気がする)。
これでは困るので、SYS IDなりユーザIDなり一意の情報を指定してインポートしたいわけだが、User列にyamada.taro1のIDなりSYS_IDなりを記載してインポートしてもエラーになるだけなのである。
色々と検索してみても(どこかにはあるのかもしれないが)なかなかこれを解決するためのドキュメントが見つからず困った。
2021年3月13日土曜日
ServiceNowの添付ファイルをPowershellでダウンロード
Servicenowのいろんなアプリの記事(インシデントチケットでもナレッジ記事でも)にはおおむね添付ファイルが付けられる。
一般的なファイル形式であればServicenow上で全文検索も可能で便利ではあるがServicenowの外で添付ファイルを扱いたいケースもある。そんな場合は添付ファイルを探してダウンロードという作業を繰り返す必要がある。
API経由でごそっとダウンロードできればそんな面倒が解放されるはずなのでPowershellで試してみる。
2021年3月11日木曜日
Servicenowにブックマークから一発で自動ログインする(ローカルアカウントのみ)
ちょっとセキュリティ的には良く無さそうだが、↓のURL([]内は書き換え)をブックマークしておくとローカルアカウントであれば自動ログインできる。
https://[YourInstanceName].service-now.com/login.do?user_name=[UserName]&sys_action=sysverb_login&user_password=[PassWord]
会社のアカウントとか重要な情報入りのアカウントとかではpassword直書きのURLになってしまうので、セキュリティ的にNGだろうが、developerインスタンスのブックマークとかはこれにしとくと便利かも。ちなみに[PassWord]の部分は普通に平文でOK。
2021年3月10日水曜日
Servicenowでチケットを複数のメンバーにアサインしたい。
チケットを複数の人にアサインしたい。
個人的には「誰がこのチケットに責任を持つのか?」が不明確になるので辞めた方が良いと思うが、曖昧を好む日本企業ではありがちと言えばありがちな要望かもしれない。
標準では出来ない?と思っていたが、よくよく見てみたらデフォルトで「Additional assignee list」というフィールドが表示されてはいないものの、用意されているではないか。
これを表示して、どう動くのかを確認してみる。
2021年3月7日日曜日
PowerShellでREST APIをたたいてCSV(xls, xlsxも追記)ファイルをServicenowのテーブルに更新インポートする
2021年3月4日木曜日
PowerShellでServicenowのAPIをたたいてデータをエクスポートする
さて前回に引き続きServicenowにインターネットに口のないURLからデータをダウンロードしてPCで中継してSNOWのテーブルへ更新インポートする様な仕組みを作らねばならなくなった(執筆時点では出来るかどうか不明)、という状況。
前回データ提供元のInternal環境のURLからファイルをダウンロードする事には成功したので、今回はServicenowからマージ(上書き)対象のデータをゲットすることとしたい。
インポート→更新、からダウンロードできるSysid付きのエクセルが落とせればベストなのだが、残念ながら現状方法が見つけられなかった。
が、一応代替手段っぽいことは出来たのでそれで行く。言語はPowerShellで続行。
ServicenowのApiエクスプローラ
ServiceNowのApiを不幸にしてたたかなければ成らなくなったときに強い味方になるツールが実装されている。REST API Explorer。そのまんま。
2021年2月22日月曜日
Servicenowのフローデザイナーを使って、ローカルアカウント発行時のパスワード設定やユーザへのアカウント情報通知を自動化する
ServiceNowの管理者として避けて通れないのがアカウント管理。AD連携等でうまい事グループや権限まで含めた自動連係が綺麗に作りこめればいいが、恐らくそこまで環境の整っている会社もそれほどないのではなかろうか。
比較的新しめの機能であるフローデザイナーを活用して、アカウント発行時の処理を一部自動化してみたい。
2021年2月20日土曜日
ServiceNowのチャットボット(Virtualagent)を設定してみた~①
世の中理不尽な事はあるもので、個人的にはチャットボット否定派なのだが、なんだか周りが盛り上がってチャットボットの導入検証みたいな事をやる、みたいなシチュエーションもなくはないと思う。
個人的な持論ではユーザの立場で使用しているシステムの問い合わせ窓口にチャットボットがあって良かったと思った事は今まで一度たりとも無く、正直チャットボットに何か質問を入力したところですでに調べて使えなかった情報や的外れな回答しか返ってこず、オペレータにつなぐまでに無駄な手間を掛けさせられる事しかないので大嫌いである。
単なるボットであればもちろんのこと、AI機能がどうたらこうたらという類のサービスでも正直2021年現在ユーザとしての私には到底利便性が向上するようなものではなく、ストレスの現況でしかないからだ。
まぁAIチャットボットとやらが何とか、ある程度のリテラシのあるユーザにも役立つと感じられるレベルに到達するには早くてもあと10年くらいかかるんじゃなかろうか、というのが個人的な感触ではある。
とはいえサラリーマンはそんなことばかり愚痴っていても仕方ないので、とりあえず使えるようにしてみることにする。
2021年2月19日金曜日
ServiceNowでチケットのステータス毎に動的に必須項目を制御する
ServiceNowのデフォルトのアプリケーションでは基本的にあまり必須項目は設定されていない。またテーブルの通常の定義ではカラム毎に必須項目を設定する事になる。
つまり最初の保存時に必須項目を設定できる。
ただ実際の使用シチュエーションではステータスに応じて必須項目を設定したいケースがある。
ケースのクローズの承認をエライ人がやる場合に、メンバーが空欄ばかりで承認依頼を出してくる様なケースがあると、起票時は必須でもよいが、クローズ前には最低限すべて埋めて出させるくらいの事はツール側で設定できないのか?という様なわがままな要望が出てくるケースは多い。
偉い人=発言力もあり要望に応じざるを得ないケースも多い。これを実現するためにはステータスに応じて動的に必須項目を設定することが必要になる。
2020年11月14日土曜日
フォームコンテキストメニューからレコード毎のXMLによるエクスポートをadmin以外のユーザに許可する
Form context menu =フォーム画面の左上の「≡」マークのいわゆるハンバーガ―メニューから、adminであれば今見ているレコードの情報をxmlでエクスポート可能である。
2020年11月13日金曜日
データベースビューの機能を特定のユーザにだけ使用可能にする
以前紹介したデータベースビューの機能だが、どういうわけかSystem Definitionの配下のメニューとなっている。つまりデフォルトだとadminでないと使用できない。
まぁ定義の内容によってはかなりの負荷をかけてしまう可能性もあるのである程度絞るのはやむを得ないが、ユーザからのデータ抽出要望が多岐にわたってくると、正直一人で全部対応するのはつらくなってくる。
ある程度DBの知識や細かい集計が必要なユーザには公開してしまった方が良い場面もありそうなので、限定的に公開するようにしてみたい。
フィルタナビゲータのメニューを制御する
Servicenowには非常に多くの機能がデフォルトで備わっている。
基本的にフィルタナビゲータで検索して機能を使用するUIになっているが、一部のユーザからは「メニューが多すぎて訳が分からない!使う奴だけ出してくれ!」という様な要望を受けることがある。
2020年11月2日月曜日
Servicenowのテンプレートやテーブルのデフォルト値定義に使えるJavascriptリスト
以前に記載した通りjavascriptをテンプレートやテーブル定義におけるカラムのデフォルト値に使用可能で使いこなせばかなり便利になる。
リファレンスから使い方を毎回考えて適用するのは正直面倒なのでざっと簡単なものをコピペで使える様に列挙して行く。
+リファレンスではなくそのまま動く元ネタとして使える情報元の紹介。
2020年10月20日火曜日
Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(完成版)
さて長くなってしまったこのシリーズ。完成版としてやっといろいろな謎が解けて実装ができた。
前提知識については次の過去記事を参照願いたい。
①Servicenowのポータルでのナレッジ記事の表示順の謎
②Servicenowのポータルでのナレッジ記事の表示順をタイトル順にするためのカスタマイズ
③Servicenowの既存のテーブルにカラムを追加する
④Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(今のところ出来ませんでした)
2020年10月19日月曜日
2020年10月18日日曜日
Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(今のところ出来ませんでした)
本記事では、
①Servicenowのポータルでのナレッジ記事の表示順の謎
↑の内容を理解している事と、
②Servicenowのポータルでのナレッジ記事の表示順をタイトル順にするためのカスタマイズ③Servicenowの既存のテーブルにカラムを追加する
↑の設定を実行済みの環境を前提に、Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズを行いたい。
※本記事の検討内容では成功しませんでした。成功パターンは↓の追記をご覧ください。本記事自体は理解の一助となるかもしれないので一応残しておきます。
2020/10/20追記:Servicenowのポータルでのナレッジ記事の表示順を任意に指定できる様にするためのカスタマイズ(完成版)
Servicenowの既存のテーブルにカラムを追加する
基本的にOOTB(Out Of The Box)で=カスタマイズせずそのまま使って、業務を(ベストプラクティス基づいて設計されている)ツールに合わせるのが良いといわれるServicenow(というかパッケージの導入全般?)だが、そうはいっても経営上の管理項目だったりどうしてもカラムの追加が必要になるケースはままあると思われる。
デフォルトのカラムでちょうどよさそうなものが無ければ独自に定義して追加する事になる。
今回はちょっと前述の説明の趣旨とは異なるが、最終的にポータルでのナレッジ記事をカテゴリ内で表示させるときの順番を指定する(※1)ための下準備としてナレッジテーブルに順番を指定するためのデータを追加するという例で、カラムの追加方法を紹介する。
※1:なぜこのようなカスタマイズが必要なケースがあるかについては↓このあたりの記事を参照されたい。
Servicenowのポータルでのナレッジ記事の表示順の謎
Servicenowのポータルでのナレッジ記事の表示順をタイトル順にするためのカスタマイズ
2020年10月17日土曜日
ServiceNowのテンプレートでスクリプト(Javascript)を使う
テンプレート機能の使い方については↓以前のこのあたりの記事を参照。
さて時にテンプレートを使用していると動的な値を入れたくなることがある。
なぜか公式のドキュメントには丁寧な案内が見当たらないのだが、テンプレート内でJavascriptを使うことができる様になっている。
ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い
インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...
-
以前 こちら の記事で参考にしたソースコードでは一部うまく行かないケース(ps1スクリプトに与える引数が正しく渡せない)があったので動くように改善してみました。 Excel VBAからPowershellスクリプトを引数付きで実行する方法について解説します。関数化して、汎用性を持...
-
Servicenowの導入を成功させるキーポイントとしてよくOOTB(out-of-the-box)で使うことが重要と言われる。 ServiceNow自体はプラットフォームとしてアプリケーション開発基盤としても使えるわけだが、SaaSとしてベストプラクティスが組み込まれており、あ...
-
Excel VBAは言わずもがな強力なツールであるが、ユーザへのアナウンスというかマニュアル作成というか、まぁ使ってもらうためのお膳立て面が面倒だったりする。 そこで、VBAで組んだ機能をワークシート関数化してしまえば、そのファイルの中ではワークシート関数(=sum(A1:A10...



