Investor 1.0.0

Welcome to Investor - created and maintained by Sascha Wildgrube.


The Investor app enables users to manage their investment portfolios.

Prices can be loaded using the market data API provided by Alphavantage. Based on these market prices, the current value and performance of user portfolios are displayed.

Special events (like the death cross, golden cross, or significant daily performances) are identified. A limited number of trading signals are derived from such events.

Tasks are generated for users on a daily basis which should encourage users to review specific positions in their portfolios.


Investor is NOT an officially supported ServiceNow product.

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

System Requirements


In order to operate the Investor app the following prerequisites are required:

  • An API key from alphavantage (to load prices)
  • An API key from openfigi (to identify notations at an exchange)


  1. Create an account on GitHub (if not done already).
  2. Create a personal access token for your GitHub account.
  3. Paris or later: 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. Fork the repository
  7. Go to Studio and import the Investor application from source control.
  8. The x_snc_investor.AppInstall() function must be executed.
    Run the following script as a background script in scope x_snc_investor:
  9. x_snc_investor.AppInstall();
  10. Set the sn_atf.runner.enabled system property to true to activate the ATF test execution (if not set already).
  11. Run the DevTools test suite.
  12. Run the Investor test suite.
  13. Read access to the fx_currency table must be granted to users with the x_snc_investor.user role
  14. The alphavantage api key must be stored in the global system property "investor.marketdata.api.alphavantage.apikey".
  15. The openfigi api key must be stored in the global system property "investor.marketdata.api.openfigi.apikey".
  16. To enable the Investor app to load prices for an instrument, at least one exchanges at which these instruments are traded must be manually activated. To do this the exchange must be set to active AND the symbol code must be entered.
  17. Instruments that users want to add to their portfolios must be manually added to the table. By default users can create issuers and instruments by themselves.

Ideas and Known Issues

  • Price data can only be loaded using the alphavantage api. In the future an extension point may allow the support of any market data api of choice.
  • Same applies to the use of the openfigi api to identify instrument symbols at exchanges.
  • The included exchange list does not contain the exchange symbol which is required by the alphavantage api. This requires that the exchange symbol is identified by an admin and must be entered manually - this should be automated.
  • Instruments should be identified and loaded automatically and should not need to be added manually.


System Properties

UI Actions


Copyright 2022 by Sascha Wildgrube

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

You may not use DevTools 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.0.0 - 2022-01-20

First baselined version