logo

NJP

Baseline multiple Projects

Import · Nov 02, 2018 · article

PROBLEM?

The problem is "baseline" as a concept is something you do on *A* project. There exists no concept of "Baseline all THESE" projects. If you're like me, and you need to import 100+ projects prior to go live, that's a MASSIVE PAIN IN THE PITOOTER.

BASELINE MULTIPLE PROJECTS

I deconstructed the Baseline UI Action and UI Page to give you a script you can use to baseline a bunch of projects at once. In this way you can import a ton of projects, then query for Projects created after a certain date. Use that query as a means of creating a loop to execute baselines.

My near term goal is to make this a UI action you can trigger on a list of selected Projects, without having to update a script manually.

var logger = '';
var base_name = 'ScriptedBaseline1'; //whatever you want to name the baseline
var base_desc = 'Scripted Baseline 1'; //whatever you want to describe the baseline
var filter = "sys_class_name=pm_project^start_date>=javascript:gs.beginningOfToday()";
var projects = new GlideRecord('pm_project');
projects.addEncodedQuery(filter);
projects.query();

while (projects.next()){
  logger += "Baselining " + projects.number + "\n";
  createBaseline(projects.sys_id); 
}
gs.log(logger);


function createBaseline(task_id){
  logger = logger + "---in function \n";
  var baseline = new GlideRecord("planned_task_baseline");
  baseline.name = base_name.trim();
  baseline.description = base_desc;
  baseline.top_task = task_id;
  var baseID = baseline.insert();

  var ptasks = new GlideRecord("planned_task");
  ptasks.addQuery("top_task",task_id);
  ptasks.query();
  while (ptasks.next()){
    var baseItem = new GlideRecord("planned_task_baseline_item");
    baseItem.baseline = baseID;
    baseItem.task = ptasks.sys_id;
    baseItem.start = ptasks.start_date;
    baseItem.end = ptasks.end_date;
    baseItem.insert();
  }
  logger = logger + "---finished loop \n\n";
}

EDIT: set the filter variable to whatever ENCODED QUERY gets you the projects you want to baseline.

Labels:

View original source

https://www.servicenow.com/community/spm-blog/baseline-multiple-projects/ba-p/2280071