An Exercise in Sensibility – Reminders

If you’ve ever poked around the tables list in ServiceNow, or browsed the ServiceNow wiki for “reminder”, you’ve probably run into the “reminder” table.  This table seems fairly straight-forward at first glance, but a deeper dig brings up several questions.  What is this Reminder Field Name field type?  Why can’t I add fields to it, or  remove fields from it?  Why is the business rule to handle the reminders inactive by default?  What is this “addListener” function?  Why is there no documentation on any of this, and in it’s stead an article to create a custom field?

Continue reading


ServiceNow Selenium Tests – Checking List Views

Some of my favorite automated tests are the simplest ones: checking forms, quickly creating records, and checking the left nav pane, for example.  The notion of checking that the list views are accurate was not high on my priority list until recently, when I had a small user story to make sure certain fields were visible in the default view.  A manual test for that is simple and quick for sure, but could I automate it and let it be worthwhile automation?

Continue reading

ServiceNow Selenium Tests – The Left Nav

In every other post I’ve done regarding Selenium testing in ServiceNow, my tests have all left the navigation pane (or Left Nav) out of the tests.  Everything gets the page via table name and a query parameter, or the direct sys_id.  From my original point of view, this is all I need my tests to do: fill out forms, check mandatory fields, make sure the record state flows properly.  But some may want more of the user experience for their tests.  Or maybe you’re like me and you want to make sure filters from the left nav are working properly.  So, I’ve got a quick way to generate a left nav page object, and some quick instructions on how to use it.

Continue reading

Brief Update

It’s been a while since I’ve posted anything, but I wanted to say I’m working on several interesting pieces of functionality right now.  I hope to write full posts on some of these topics in the near future.

  • Change Tasks generated based on either a time element on a form or the closure of multiple other change tasks.
  • Dynamic system documentation so users reporting on ServiceNow have a go-to place to learn about what information is present and what it means.  It will also pull in data about what’s on the forms, so users can see in that report what field we actually use.  The only “manual” part of this documentation is giving a description to each field and table.  It updates on every dictionary and table update.
  • A two-way Rally Integration (although we’re going to just use the data extraction piece and move out of Rally into ServiceNow SDLC).
  • Skipping approvals for the same user (both with skipping the generation of their approval record in the future only, and skipping the entire phase of approval they are associated with in the future).
  • Mentioned before, but an integration with Jenkins that creates a change request in ServiceNow, then once the change is approved, builds the Jenkins job at the planned start time.
  • A script the dynamically generates the import set table and data table for BDNA Technopedia Integrations.
  • A field on a catalog item that copies the data from a similar request item so users can submit multiple requests that are similar (but one or two changes) faster.  Example: Onboarding 10 different interns – the only difference in each form is the name.  Normally this could take several minutes to fill out the forms.
  • I’ve been using the Left Nav more often in ServiceNow browser testing automation.  So I have code to generate the left nav as a page object.  It’s been helpful to write quick tests to just ensure that the links have the correct filters.
  • Changing how surveys are generated so they are included in the email with every resolved incident.  Also, deleting surveys which aren’t taken after 7 days.
  • Cleaning up the cmdb_rel_ci table to automatically delete records that aren’t needed (ie, when a CI is deleted, or possibly even retired/decommissioned).