Parcel 1.3.0

Welcome to the Parcel app - created and maintained by Sascha Wildgrube.

This app was built to help organizing the shipment of medical supplies to the Ukraine during the full-scale invation that started in February 2022.

It is dedicated to the people of Ukraine, their resistance and to everyone who invests their time and resources to help.


Produce PDF shipping labels. Scan labels to track the position and delivery of parcels.


Parcel is NOT an officially supported ServiceNow product.

Parcel does NOT come with any kind of warranty. If you use it, you own it!

System Requirements


  1. Create an account on GitHub - if not done already.
  2. Create a personal access token for your GitHub account.
  3. Add credentials to access GitHub - use "Basic Auth".
  4. Fork the repository
  5. Go to Studio and import the DevTools application from source control.
  6. Perform all installation steps for the DevTools application documented here: 
  7. Fork the repository
  8. Go to Studio and import the Parcel application from source control.
  9. The InstallApp() function must be executed.
    Run the following script as a background script in scope x_snc_parcel:
  10. x_snc_devtools.InstallApp("x_snc_parcel");
  11. Define a default parcel profile.
  12. Configure event options for the default parcel profile.



  • x_snc_parcel.admin

    The Parcel admin can control the installation and setup of the parcel app. The role contains the manager and viewer role.

  • x_snc_parcel.manager

    The user can manage (i.e. modify) parcels, parcel events and parcel event options. The role contains the viewer role.

  • x_snc_parcel.viewer

    The user can view all parcels, but cannot make any changes.

Configuration Options

UI Actions

Script Includes

  • AppGetDependencies

    Retrieves information about the app's dependencies to other apps and required versions.

  • AppGetProperty

    Gets a system property of this application.

  • AppInstall

    This script installs Parcel.

  • AppSetDefaults

    Sets all system properties to default values.

  • AppSetProperty

    Sets a system property of this application.

  • CreateParcel

    Creates a new parcel based on a destination location, sender location, a task, a parcel text, the parcel profile, an array of contact (user) ids and an array of categories.

  • CreateParcelLabel

    Creates a label for a parcel and stores it as an attachment.

  • CreateParcelLabelsFromTask

    Creates a pdf document containing all labels associated to a task and stores it as an attachment to the task.

  • Debug

    Produces a log output in the application log using the DevTools Debug function.

  • DevTools

    Implements the extension point for DevTools.

  • DevToolsGetApplicationStatus

    The function DevToolsGetApplicationStatus is called by the DevTools extension point instance class and returns the application status object with additional status information to be displayed on the "DevTools Application Overview" page.

  • DevToolsGetFormatConfig

    The DevToolsGetFormatConfig function is called by the DevTools extension point instance class and returns an object with field formatting information.

  • DevToolsGetInstancePipelineName

    The function DevToolsGetInstancePipelineName is called by the DevTools extension point instance class and returns the pipeline name of an instance based on the given actual name.

  • DevToolsGetLinkDirectory

    The DevToolsGetLinkDirectory function is called by the DevTools extension point instance class and returns an extended (or modified) link directory object that serves as the basis for the DevTools Link page.

  • DevToolsGetParentRecord

    The DevToolsGetParentRecord function is called by the DevTools extension point instance class and returns a parent record for the given record if it can be determined.

  • DevToolsRenderDebugDump

    The function DevToolsRenderDebugDump is called by the DevTools extension point instance class and returns additional debug information provided by the application.

  • GetCategoriesFromParcels

    Gets the names of all parcel categories associated with one or more parcels identified by their sys ids.

  • GetContactsFromParcels

    Gets contact details of all contacts associated with one or more parcels identified by their sys ids.

  • GetDefaultProfile

    Returns the sys id of the default profile if it exists.

  • GetParcelCountFromTask

    Returns the number of parcels associated to a given task.

  • GetParcelRecord

    Returns a parcel record based on a sys id or a parcel number.

  • GetProfileRecord

    Returns the parcel profile record based on the given sys id.

  • IsActive

    Returns true if the application is active, otherwise false.

  • Log

    Produces a log output in the application log.

  • LogError

    Produces an error log output in the application log.

  • LogWarning

    Produces a warning log output in the application log.


Copyright 2022-2024 by Sascha Wildgrube

Licensed under the Apache License, Version 2.0 (the "License")

You may not use Parcel except in compliance with the License.

You may obtain a copy of the License at:

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Release Notes

1.3.0 - 2024-03-24

  1. Tokyo and Utah are no longer actively supported.
  2. Parcel is fully tested on Vancouver and Washington.
  3. Whether the geo location should be captured during scanning is now configurable in the parcel profile. Default is off.

1.2.0 - 2023-11-13

  1. The parcel categories are now printed on the parcel label.
  2. UI Action "Create Parcel Labels (PDF)" is no longer available for closed tasks.

1.1.0 - 2023-08-20

  1. DevTools 1.65.0 is now required.
  2. Rome and San Diego are no longer actively supported.
  3. Parcel is now fully tested in Tokyo and Utah.
  4. The x_snc_parcel.admin roles is now required to configure profiles, categories and event options.
  5. The "Parcel Categories" module is now visible to users wth the x_snc_parcel.viewer role.
  6. The function CreateParcel() now also supports parcel categories.
  7. The wording "TASK/CASE" on the parcel label has been replaced by "REFERENCE".

1.0.0 - 2022-10-07

First baselined version