Parcel 1.5.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.

Overview

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

Table of Contents

Features

  • Manage parcels and track their delivery.
  • Produce PDF parcel labels to be printed and attached to the physical parcels.
  • Document weight and dimensions of multi-part parcels.

Disclaimer

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

Installation

  1. Create an account on GitHub - if not done already.
  2. Create a personal access token (classic with "repo" scope) for your GitHub account.
  3. Add credentials to access GitHub - use "Basic Auth".
  4. Perform all installation steps for the DevTools application documented here: https://www.wildgrube.com/servicenow-devtools/ 
  5. Fork the repository https://github.com/saschawildgrube/servicenow-parcel.
  6. Go to Studio and import the Parcel application from source control.
  7. Execute installation scripts.
    Run the following script as a background script in scope x_snc_parcel:
  8. x_snc_devtools.InstallApp("x_snc_parcel");
  9. Define a default parcel profile.
  10. Configure event options for the default parcel profile.

Reference

Roles

  • 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

Tables

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.
    |
    Methods:
    * initialize()
    * GetParentRecord()
    * GetLinkDirectory()
    * GetFormatConfig()
    * GetApplicationStatus()
    * RenderDebugDump()
    * GetInstancePipelineName()

  • 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.

Dependencies

Technical Debt

License

Copyright 2022-2025 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: https://www.apache.org/licenses/LICENSE-2.0

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.5.0 - 2025-12-26

  1. Xanadu is no longer actively supported.
  2. Parcel is fully tested on Zurich.
  3. DevTools 1.135.0 is now required.
  4. Added function CreateParcelPart().
  5. Refactored UI Action "Save and Copy" to use new function CreateParcelPart().
  6. Refactored Business Rule "Parcel Profile - Control default" to use function GetDefaultProfile().
  7. Added section "Features" to the manual.
  8. Added ATF test for GetCategoriesFromParcels().
  9. Added ATF test for GetContactsFromParcels().
  10. Added ATF test for CreateParcelEvent().
  11. Added ATF test for HtmlRenderPageParcelScan().
  12. Added ATF test for HtmlRenderParcelLabelA4().
  13. Added ATF test for GetParcelCountFromTask().
  14. Added ATF test for CreateParcelLabel().
  15. Added ATF test for CreateParcelLabelsFromTask().
  16. Added ACL for manual UI Page.

1.4.0 - 2024-11-08

  1. Parcel is fully tested on Xanadu.
  2. Vancouver is no longer actively supported.
  3. DevTools 1.105.0 is now required.
  4. GetParcelScanPageURL() is no longer using deprecated function GetInstanceURL().
  5. GetParcelRecord() now first uses GetRecord() and hence supports a parcel record as parameter.
  6. CreateParcelEvent() now also accepts a Parcel record.

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