Version: WasigntonDC
試したのはCreated(sys_created_on)だけですが同じ手段で他のSystem Field(sys_created_by, sys_updated_on, sys_updated_by)にも値は入れられるのではと思います
動機
100日前に作成されたユーザーをinActiveにするといった処理をテストするとして
ユーザーテーブルの作成日(sys_user.sys_created_on)に100日前(任意)の時間を入れられないかと考えました
作ったもの
ここのCommunityのScriptを
[Can i update sys_created_on field value ]
https://www.servicenow.com/community/developer-forum/can-i-update-sys-created-on-field-value/td-p/1380126
少し修正して以下にしましたATFのStepなどで汎用的に使えるように実行した時間の100日前の値を設定するようにしていますupdate()は事故防止でコメントにしていますので必要に応じて外して使ってください肝はupdate()の行の上2つの行で自動でSystem Fieldに値が設定されないようにしてその他のBusiness Ruleが動かない設定にしています
var gdt = new GlideDateTime();
gdt.addDays(-100); // 100 days ago !!!!
gs.info("******** Let's get party started!!! " + gdt.getDate());
var gr = new GlideRecord("sys_user");
gr.addQuery('user_nameLIKEマグロ');
gr.query();
while (gr.next()){
gs.info(gr.name + " before:" + gr.sys_created_on);
gr.sys_created_on = gdt;
gr.autoSysFields(false); // Do not update sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by, and sys_created_on
gr.setWorkflow(false); // Do not run any other business rules
// gr.update(); // ******** if u need, uncomment ********
gs.info(gr.name + " after:" + gr.sys_created_on);
}
実行結果
Scripts - Backgroundで上記Scriptを実行します
User IDにマグロを含むユーザー7人のCreatedを
100日前にしました
XMLのExport/Importでもできた
更新対象のユーザーのレコードをXMLでExportしてテキストエディタでsys_created_onの値を編集してImportしても出来ました毎回決まった時間に戻したいときはXMLを使ってもいいかもです