These are some of the tools that we use.


Jira

Developer Advocacy project

The DX project is what we use to track our work items in Jira.

Jira team

Backlog

The Jira project has a Backlog that is used to keep track of items that we aren’t ready to start working on in the upcoming 2 weeks.

When we think of new ideas, notice defects to be fixed, or have chores to do, we create tickets and put them in the backlog.

  • Epics
    • A large body of work to-be-done (e.g. create developer documentation for the Plugin Framework). Can be broken down into stories.
  • Stories
    • A single, concrete ’thing’ to-be-done (e.g. writing a tutorial, creating sample code). Can be broken down into sub-tasks.
  • Tasks
    • Chores to be done (e.g. upgrade dependencies, update text or screenshots as the product evolves over time).
  • Bugs
    • These are code defects or documentation errors.

Kanban Board

The Jira project has a Kanban board that we use to track progress on items we are currently working on or will start working on in the upcoming 2 weeks.

These are the different states of work:

  • Selected for Development
    • Represents work that is queued up, but not yet started.
  • In Progress
    • Used for work-in-progress. Staying in this state for a long time means that something is blocked, or that the work should be broken down into smaller, achievable chunks.
  • Done
    • Final state for work that has been completed (usually means that something has been published/deployed).
  • Won’t Do
    • Alternate final state for work, usually means we either can’t or won’t do the work.

Roadmap

The Jira project has a Roadmap that we use for planning and tracking progress on items which are needed throughout the calendar year. This is useful for shuffling around / reprioritizing work based on dependencies on other teams or on rigid deadlines (e.g. conference event dates).

The roadmap feature works off of Jira epics as the basis for the timeline.

Epics can have linked dependencies in the timeline, which are displayed with a literal linkage between different epics.


Google Analytics

Google Analytics 4

Old - Google Analytics 3 / Universal Analytics (UA)

We have JackHenry.Dev instrumented so that we can understand the behavior of the community that reads our docs.


Honeycomb

https://ui.honeycomb.io/banno/environments/prod/

Honeycomb has replaced usage of Datadog when we need to find an x-request-id to look up an API request.

  • Honeycomb is also useful to folks in Engineering who need to observe what is happening to Jack Henry’s systems.

For example, given:

x-request-id: a8ba901611406e2daaaa21a1c98d0664

We can search the logs in Honeycomb by:

cf_x_request_id (a calculated field)

(cf is a prefix for “calculated field” and replicates special handling that was also done in datadog behind the scenes)

  • Navigate to Query (if you’re not already there)
  • Click Where and type out cf_x_request_id (this autocompletes for you)
  • This should bring up an “=” where you can put the request ID e.g. cf_x_request_id = a8ba901611406e2daaaa21a1c98d0664, hit Enter to turn it into a filter.
  • Click Run Query.
  • This should bring up the results, and if it does not, then you may need to change the time window from its default of “Last 2 hours” to some other range.
  • To see traces/logs, you can either click on the Explore Data tab below the chart, or click on an entry in the chart.
  • You may need to add body exists to the query (that is how you say you’re looking for logs, not traces and other types of telemetry)

You can click the arrow (>) to see a summary of info from the traces/logs, or click the blue link to dive deep into a trace.

x_request_id

  • Navigate to Query (if you’re not already there)
  • Click Where and type out banno.request.x_request_id (this autocompletes for you)
  • This should bring up an “=” where you can put the request ID e.g. banno.request.x_request_id = a8ba901611406e2daaaa21a1c98d0664, hit Enter to turn it into a filter.
  • Click Run Query.
  • This should bring up the results, and if it does not, then you may need to change the time window from its default of “Last 2 hours” to some other range.
  • To see traces/logs, you can either click on the Explore Data tab below the chart, or click on an entry in the chart.
  • You may need to add body exists to the query (that is how you say you’re looking for logs, not traces and other types of telemetry)

You can click the arrow (>) to see a summary of info from the traces/logs, or click the blue link to dive deep into a trace.

Signing up / Logging in

Training

Engineering

Operations

Data Aggregator usage (plus regular Banno usage)

Real world usage of Banno’s API (new environment in Honeycomb)

  • Defaults to a time period of ‘Last 28 days’, but you can tweak the query and re-run for different time periods.

Executive Dashboard (Honeycomb)

https://ui.honeycomb.io/banno/environments/prod/board/J2zQMcM7Tbi

Zach McCoy’s description in #org-engineering in Slack:

:waveboi: Good afternoon! There’s a new dashboard in Honeycomb called the Executive Dashboard. The purpose of this dashboard is to give ourselves a view of specific user interactions that we think are important and how we’re doing in accordance with what define as success. This dashboard is made up of 6 SLOs across Accounts, Transactions, Fetch/Sync, Logins, and Billpay. This specific group of endpoints is currently just copied over from what Simmons had talked about caring about as a starting point. If your team owns one of these interactions in our stack you’ve already gotten a ping from me in your channel.

What’s the point?

These are meant to give anyone a high level view of how our customer experience is going for specific actions. We’ve defined a measure of success in the SLIs and are measuring from there. These are meant as a way to have a shared understanding or goal that we’re measuring off of around the customer experience. These are not immutable, they’re another type of living document or agreement between our teams and folk like Mac and product so that we can agree upon what a good user experience looks like and measure from there. These should push us towards the same understanding of our systems and spark discussions about what we may want to do to increase reliability.

Why isn’t endpoint X on the board?

This is a first draft and we’d like to start slow and see how this affects how we talk and work through reliability of our system.

As always, if you have questions or anything Scott or myself are happy to chat.


Cisco Registered Envelope Service (CRES)

Cisco Registered Envelope Service (CRES)

We use this tool to share sensitive information with companies and individuals (non-Jack Henry) that should not be shared via unsecure methods (e.g. email, publishing in GitHub repos).

Examples of sensitive information include (but are not limited to):

  • API credentials (e.g. OAuth Client Secret)
  • Username / Password

Note: This tool requires senders and recipients to register an account with the service.

This tool is a bit unorthodox in the manner in which information is accessed.
The recipient will receive an email with an attachment and a message that says something similar to:

"To read this message on desktop, open the securedoc<character-string>.html attachment in a web browser."

The user needs to open the attachment and use their CRES credentials to open and view the message.

Test Credentials

Test Credentials - Google Docs

The Analysts team maintains a spreadsheet of test user accounts for various environments.

Each tab roughly corresponds to an environment.

Note: Please make sure not to change the username or password as these accounts are shared with other employees!

Note: Most of these users require 2FA (two-factor authentication) code to finish logging in. We have the #auto-authy-codes channel in Slack configured to receive these codes.


Test User Management (& Vendors)

Test User Management - Google Docs

The Analysts team maintains a spreadsheet of user accounts that have been setup for individual Jack Henry employees to use in test environments.

In addition, this spreadsheet has a Vendors tab that is useful for us as this is where the test account info can be found for the test users we have set up for 3rd party developers.


REST Client

REST Client on Visual Studio Code Marketplace

This plugin for VS Code is handy to use when experimenting with real requests to our APIs.

It is a useful alternative to curl.

As you might expect, it does an excellent job of handling RESTful APIs. However, it also is useful for interacting with GraphQL too.


Swagger Editor

Swagger Editor

The Swagger Editor is useful to view and edit Swagger/OpenAPI spec files (such as the ones we have in our internal API docs as well as on JackHenry.Dev).

It supports:

  • Validating spec files Example PR
  • Converting from older versions of the spec (e.g. 2.x to 3.x) Example PR
  • Switching formats (e.g. from JSON to YAML) Example PR

Node.js Debugging

Node.js Debugging Guide

It can be useful to debug what’s going on with Node.js apps such as the Consumer API OpenID Connect Example.

Node.js provides a --inspect-brk option that can be passed in when running Node. This can be used with various debugging tools (as shown in the linked debugging guide above).

The Chrome browser has the Chrome DevTools which are nice. The debugger can be opened by navigating to chrome://inspect and clicking the “Open dedicated DevTools for Node” link (under the “Devices” section). That fires up a debugger window that has play/pause/step-over/etc buttons.

As a concrete example for how to use this, the Consumer API OpenID Connect Example project has this in its package.json file:

"scripts": {
    "start": "ENVIRONMENT='local' node server.js"
  },

If we wanted to run and debug the project, we could do this at the command line (to incorporate the Node debugging option):

ENVIRONMENT='local' node --inspect-brk server.js

Once that’s running, we can use Chrome to navigate to chrome://inspect. Once the debugger is running, we can put a breakpoint in the debugger window e.g. where the const options line is within the app.get('/auth', (req, res, next) function:

app.get('/auth', (req, res, next) => {
  const options = {
  // ...rest of function omitted for conciseness
}

Now you can navigate to any of the example project’s URLs that trigger the /auth route to be handled, and the debugger will pause at the breakpoint.

Once it does, we can use the Console at the bottom of the debugger window to do things such as printing out the request’s URL.

console.log(req.url);

// Results in "/auth"

Docs Splinter

Docs Splinter Readme

When scrubbing docs, it’s useful to be able to compare actual API responses to the documented JSON response example generated by Swagger. This allows us to quickly identify returned properties that are missing from the documentation.

Usage: docs-splinter [options]

Options:
  -V, --version          output the version number
  -r, --respfile <path>  File path to API response JSON
  -d, --docfile <path>   File path to documented response
  -i, --ignore-nesting   Adding the i flag will ignore nesting and only
                         validate top-level properties
  -h, --help             display help for command

The tool can either be installed globally on your machine npm install git+ssh://git@github.com:Banno/docs-splinter.git -g or can be used with npx using npx git+ssh://git@github.com:Banno/docs-splinter.git -r <api_response.json> -d <documented_example.json>

Once we run the tool and pass it the two arguments (the actual API response JSON file and the documented example response JSON) you will get an output similar to below, validating the results:

✔ Found property username and types match
✖ Missing property account_id
⚠ Found property account_balance but types do not match

Using the -i flag, the tool will validate nested children as well as attempt to validate the contents of arrays (so long as there is at least one element available).


Digital Toolkit Integrator Info

Digital Toolkit Integrator Info - Microsoft Excel

This spreadsheet is shared with the Product team to track the various organizations and associated individuals that the DevRel team has provided test users and API credentials (and the associated environment).


Product Team Insights

Product Team Insights on Jira

This tool belongs to the Product team. It’s a way we can add new ideas (or ‘insights’) that’ll get triaged and synthesized by the Product team for common themes and patterns.

The most common source of insights from the DevReal team will likely originate from our conversations with 3rd party developers.


FDX Mapping: Account Categories, Types, Subtypes

Account Categories - Google Docs

The Analysts team has a spreadsheet that maps the Account Categories within Banno. This spreadsheet maps from the financial core level (e.g. Silverlake, CIF 20/20, Core Director, Episys) into Banno’s layer and how the Account Categories can be mapped to FDX Account Types.

Both community banks and credit union (CU) views of the data are within the spreadsheet.


New User Creation Tool (UI)

Replacment for #new-user-creation-tool-command-line

Kobalt Internal Tools can be used to create new users in Garden and other environments.

https://docs.banno.com/operations/kobalt/#create-jx-test-consumer


New User Creation Tool (command line)

NOTE: replaced by #new-user-creation-tool-ui

New User Creation Tool

This tool (which requires being on the VPN) can be used to create new users. Technically speaking, this creates users that can then be enrolled using the output of the tool.

Most of our usage will be to create users in the Garden environment like this:

npx @banno/demo-fi-utils create-user --fi=garden

The output will look something like this:

npx @banno/demo-fi-utils create-user --fi=garden
npx: installed 60 in 8.621s
? first name Riley
? last name Doe
? middle name or initial (optional)
? email address v9f4y9o2h4s8h5d4@banno.slack.com
? phone number 3194861453
Created CIF: DAA0020 with taxid: 481-00-0432
Created Checking Account: 104220
Created Savings Account: 104249

These values can be used to enroll the user in Banno Online (in this case in the Garden environment). Ensure that the phone number used in the enrollment process is a phone you have access to in order to perform the account activation, once created, the two-factor requirement can be disabled from the Banno People user configuration page.

NOTE:

Use this email address for one time passcode delivery on test accounts in the #auto-emails channel in Slack: v9f4y9o2h4s8h5d4@banno.slack.com

You can use a different email address, but it’ll have to be an email address that you can actually access to retrieve the one time passcode.

NOTE:

There is a new phone number for 2fa code delivery on test accounts in the #auto-authy-code channel in Slack: 3194861453

Do not use 319-343-9867 as it did not make it through the Google domain changes!


Enterprise Integration and Services (EI&S) 360 Tool

Enterprise Integration and Services (EI&S) 360

The Enterprise Integration and Services team has pulled together this tool that lets us look up information about Institutions, Vendors, etc.

For example, you can see Institutions that are located in specific U.S. states, info on which banking core they use, which Jack Henry products they use (although Banno isn’t listed), and more.

  • Note that this tool requires you to be on the VPN to access it. You’ll specifically need to be connected via the BIG-IP VPN client, as the BEP VPN does not work for connecting (as of this writing).

  • Also note that if you’re using a browser like Chrome you’ll get a scary warning message “Your connection is not private” since there seems to be an issue with the site’s certificate. You can continue via the “Proceed to eis portal.jhacorp.com (unsafe)” option that Chrome provides.


List of Banno FIs

Be extra careful not to edit the spreadsheets!!!

Despite the confusing names, these are the list of FIs that use Banno.

From what we can tell, these are the relevant tabs:

  • CORE: FIs that are soon-to-be live on Banno
  • LAUNCHED-CORE: FIs that are currently using Banno

Banno URLs and Configs for FIs

This is a way to find out the various Banno Online URLs and configs for institutions.

server-config.json

For example, these are the entries for the Garden and Bloom demo FIs:

"garden": {
  "institutionId": "899f4398-106d-409a-9ed4-a72346778076",
  "hosts": [
    "digital.garden-fi.com"
  ],
  "live": true,
  "logoutUrl": "https://www.garden-fi.com/"
},
"bloom": {
  "institutionId": "f7dbb8d9-d298-48b1-ba7e-40c14b89e9db",
  "hosts": [
    "digital.getbloom-fi.com"
  ],
  "live": true
},

Chrome: solving localhost problem

This probably might show up for you in Chrome when running the Simple Plugin Example or Consumer API OpenID Connect Example projects. The problem manifests itself after running the open-api-docs repo’s proxy to JackHenry.Dev.

If you encounter this problem, you can visit this link in Chrome:

chrome://net-internals/#hsts

(You’ll need to copy-and-paste the link into your browser as Chrome appears to not allow this to be linked directly.)

This shows the Domain Security Policy area of Chrome. You’ll want to find the part of the page that says this:

Delete domain security policies

Input a domain name to delete its dynamic domain security policies (HSTS and Expect-CT). (You cannot delete preloaded entries.):

Enter localhost into the Domain input field and click the Delete button.

Deleting that security policy entry should now let you continue with the example projects in Chrome.


Legal Department SharePoint site

On rare occasion we may need to have the Jack Henry Legal team take a look at something for us. There was an old process that involved emailing the Legal Intake team, but the new process is to use the form on the Legal Department’s SharePoint site.


Stack Overflow (Tag)

banno-digital-toolkit

This is the tag that we created on Stack Overflow for questions related to the Toolkit or adjacent questions.

Slack Channel for ’new questions submitted’ notifications:

  • Questions on Stack Overflow using the tag banno-digital-toolkit will be dropped here in this specific Slack channel:

Enterprise Services has their own tag for jXchange

Also, the jXchange folks have their own tag too: jackhenry-jxchange


Internal Stack Overflow for Teams

http://stackoverflowteams.com/c/jackhenry

‘Stack Overflow for Teams’ is similar to the public Stack Overflow product, but is meant to be internal only content.

  • There is no relationship between this and the official, public-facing tags on Stack Overflow!

It’s used by Jack Henry’s internal team members to ask questions about how the product works. The audience is currently highly limited to Operations/Support teams and the Product Management team.


Approvers for Banno Deployments

If you ever need one of Banno’s systems to be deployed (e.g. for a situation like API creds being rate-limited), this is the list of folks at Banno who can approve such a deployment (with 2 approvals being required).

List of Approvers for Banno Deployments


Demo Environments

See Demo Environments.


Routes spreadsheet

Plugins and other 3rd party code might want to link to specific areas of Banno Mobile or Banno Online. The spreadsheet above is currently the resource where these various supported deeplinks are defined.

FYI, the format in the spreadsheet uses the Ovation demo FI to illustrate the links.

If you wanted to translate the /app/launch link to what would work with the Garden demo FI you would use https://digital.garden-fi.com/app/launch.


Books at Banno

Books on Google Drive

Per this Slack conversation, Banno has PDFs of different books that have been purchased for reference.

If you want something specific please email books@banno.com with the link, cost, and ebook or physical or both, and we’ll get it figured out.


GitHub Repos

See GitHub Repos


Debug Plugin issues with CSP (Content Security Policy)

The way that plugins work in Banno Online is that they are displayed as <iframe>s.

As such, they are subject to CSP (Content Security Policy) restrictions.

To debug:

  1. Bring up the Chrome DevTools:
  • Via keyboard shortcut
    • Option + Command + I
  • Via macOS menu bar
    • View -> Developer -> Developer Tools
  1. Navigate to Banno Online (e.g. for Garden that’s https://digital.garden-fi.com)

  2. In the Chrome DevTools, find the Network tab.

  3. Click on the entry that loads Banno’s dashboard

  • e.g. digital.garden-fi.com
  1. Click on the Headers tab

  2. Look at the Response Headers dropdown for something like this:

cache-control: public, no-cache
content-encoding: gzip
content-security-policy: default-src 'none'; script-src 'unsafe-inline' 'sha256-5tglEW0Vs+Qd9vtRZ++NKLr08Vk0yoF/jPR+mbB5eq8=' 'sha256-wyuUAa+a967T1T6WNseoupM6GGreJ7AugW1DgkH8rQI=' 'sha256-CaoScNmlERtns2TnHCEoIlyFnJ6j9BIqaHTofJj+9H0=' 'sha256-Gg8sPSLJwbgqgvV9vG+81MRL/fbjwOwXRrLB4BfPljI=' 'sha256-GuThkIHkgijxUnBRX9sGC+6xqf5a4HGNV7gu47KQDTQ=' 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://www.google-analytics.com https://stats.g.doubleclick.net https://banno.com https://*.banno.com https://*.googleusercontent.com https://banno-assets-production.s3.amazonaws.com https://banno-sentry-production.s3.amazonaws.com; media-src 'self'; frame-src 'self' https://*.mybankhq.com https://*.billpaysite.com https://*.banno.com https://geezeo-tiles.s3.amazonaws.com http://localhost:8000 https://localhost:8080 http://localhost:8080 https://wbtuat.newgenbpmcloud.com https://dev-apim.autobooks.co http://localhost:4040 https://creditscoretest.savvymoney.com https://oidcdebugger.com https://oauthdebugger.com https://www.garden-fi.com http://9d750fe938ce.ngrok.io https://apim.autobooks.co https://digital.garden-fi.com http://192.168.136.50:4200 https://bannodev.deeptarget.com:21700 https://olb.deeptarget.com; child-src 'self'; font-src https: data:; frame-ancestors 'self'; connect-src 'self' https://www.google-analytics.com https://stats.g.doubleclick.net https://getsentry-production.banno.com wss://digital.garden-fi.com; manifest-src 'self'; worker-src 'self'; report-uri https://getsentry.banno-tools.com/api/2/security/?sentry_key=e7dd91cbbd044257977d999a9c5709f5;
content-type: text/html; charset=utf-8
date: Wed, 01 Sep 2021 22:15:02 GMT
etag: W/"1260f-40uylOQKXHbJ3y9/Q8zks6tRUkE"
permissions-policy: document-domain=()
referrer-policy: strict-origin-when-cross-origin
strict-transport-security: max-age=15724800; includeSubDomains
vary: Accept-Encoding
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN

The content-security-policy is what you’re looking to find.

Usually, new entries are added when new Redirect URIs are added to External Applications in Banno People. For example, the two redirect URIs used in our example projects http://localhost:8000 https://localhost:8080 (or rather, the roots) are allowed in the content security policy above.

If the content security policy doesn’t include the redirect URIs that you expect, there’s a good chance that there is an issue with the Banno/web-server and you’ll need help from the Online team.

Examples of previous help:


Find more info about Institution (given its Institution ID)

For example, for the Garden demo FI with Institution ID 899f4398-106d-409a-9ed4-a72346778076:

https://infra-az-centralus.banno-production.com/data-services-reporting/institutions/899f4398-106d-409a-9ed4-a72346778076/details

Looks like you need to be signed into GitHub to access that URL (or others like it).

It has some nifty info:

  • Name of the FI
  • Marketing URL
  • City, State, Time Zone
  • Routing Number
  • Links to:
    • Institution’s Abilities
    • User Ability Overrides
    • Documents Settings
  • Recent Requests for the Institution
    • e.g. fetch/sync requests
      • which can then dig deeper into your own userId

Plaid Integration

We arguably don’t need to know much about the Plaid integration since they aren’t using our API per se but rather Jack Henry is using Plaid’s API (Plaid Exhange, specifically).

Just in case, here’s interesting/relevant info:

  • Plaid normally uses screen scraping techniques to access financial data on a user’s behalf at an financial institution.
    • This has the downside of being less secure since it puts a lot of trust that the user’s actual username + password aren’t revealed anywhere in the process of Plaid logging in as if it was that user.
  • The Plaid Exchange method uses tokenization and OAuth (or an OAuth-like experience) to securely manage the connection between the FI and Plaid itself. The user’s username + password are never shared.
  • Slack channel for the integration project: #proj-plaid-integration
  • Spreadsheet for FIs live with Plaid Exchange solution: Plaid Integration

List of official OAuth / OpenID Connect Scopes


Find an Institution’s ID

The Data Services (DS) Reporting wiki page has good info on how to find an Institution’s ID.

You’ll want to make sure to use the correct URL for the environment (i.e. PROD or UAT) and also make sure to use the Institutions query.

Beyond that, the text searching seems fairly forgiving so searching for “Simmons” will give “Simmons Bank”, “Simmons First”, and “Simmons Bank BETA” as results.

FYI, you can also use the tool (with the PROD URL) to find our Garden and Bloom Demo Environments.


LinkedIn Learning

https://www.linkedin.com/learning/

  1. Make sure to use your JHA email address when you’re signing up / logging in.

  2. The signup UI makes the below step seem mandatory but it is optional:

Shortly afterwards, you will receive an email from LinkedIn Learning. This email will allow you to link your personal LinkedIn profile or set-up learning recommendations – this is optional.


API Diff

https://api-diff.io/

This tool is useful when comparing Swagger/OpenAPI spec files.

It goes beyond simple diffing of lines of text and shows a semantic view of the changes. For an example and screenshots, check out this Slack thread.


QR Code generator

https://www.the-qrcode-generator.com/

This tool is useful to generate QR codes. It seems to provide good quality QR codes in different sizes and file formats.

We’ve used this in the past to create QR codes to link from conference presentations to content on JackHenry.Dev.


Datadog

No longer useful!

Use Honeycomb instead.

Left old Datadog details in case we need to compare while transitioning to using Honeycomb.

Login: <https://us5.datadoghq.com/account/login/id/f787198a-c7fd-11ed-afab-da7ad0900005

- Log in with your Okta / @jhacorp credentials. - See Observability / Datadog for details

Viewing logs: https://us5.datadoghq.com/logs

We use this tool to debug issues that occur with the API. Assuming that we get a report with a “Request ID”, we can look up the logs in Datadog.

For example, given:

x-request-id: aad84b2e5d2cc3fb671a58c677f58337

We can search the logs in Datadog by:

Datadog usage - Choosing Search for - Adding a filter of banno.request.x_request_id - …with the Request ID as the value. (See screenshot.)

Pro-Tip: If you get zero results, you might have better luck by changing the Time Range in the Datadog UI (near the top, roughly upper right corner).


Solution Diagrams

https://jackhenry.sharepoint.com/sites/solutionservices/Diagrams/Forms/AllItems.aspx

Have you ever wondered how all the products our customers use daily connect to each other? Have you ever gotten a question about how a product relates to another?

Introducing the Solution Diagram. Solution Diagrams show, for both Jack Henry and 3rd party vendors, the relationship between core and complementary products. They also show a grouping of each product into its functional area (i.e., what it does for our customer). This new level of transparency strengthens our One Jack Henry commitment.

These diagrams can be used to see a customer’s current Jack Henry environment and can be used in the sales cycle, the implementation cycle, and the support process while working with these customers.

The completed diagrams are available here. Right now, this is for internal use only. The JH Technology Architecture Services™ team has been created and will manage the distribution to each customer. If you have any questions, please email SolutionDiagrams@jackhenry.com. The process flow can be found on the SharePoint site for this group.


IP Addresses for Banno

This is available in Team Dobby’s Networks wiki page.


One Jack Henry - Marketing Resources

https://jackhenry.sharepoint.com/sites/marketing


Okta

https://jackhenry.okta.com

This is the provider for One-time password (OTP) authentication that we use for two-factor authentication to Jack Henry resources.

Questions? Please contact Jack Henry Okta Support at jhoktasupport@jackhenry.com


Google Cloud Training Program


Help for VIP

Used by third party developers to create cases for the EI&S Product Adoption team.

Only available to vendors who are a member of the VIP (Vendor Integration Program).


Help for Garden demo institution

If the Garden demo institution is having problems or is down, do one of these:


Figma assets (Visual Logic)

These are from Visual Logic.


Inclusive Naming Initiative word lists

https://inclusivenaming.org/word-lists/

Those lists are useful when we’re writing technical material. They help us avoid problematic terms and jargon which are not inclusive, and have recommended replacements and alternative terms.


JH Vendor Relations Integrated Vendors List

JH Vendor Relations Integrated Vendors List

The Vendor Relations team has a tool where you can “find lists of the third party solutions that are integrated to JH solutions”.

  • Note that this tool requires you to be on the VPN to access it. You’ll specifically need to be connected via the BIG-IP VPN client, as the BEP VPN does not work for connecting (as of this writing).

Extract Public Key from Certificate .PEM file

The Client Credentials flow for the Admin API requires a Public Key + Private Key pair in .pem format.

Assume you have been given a certificate file (named certificate.pem in this example) which contains a public key within it that you want to extract to use with the Admin API.

-----BEGIN CERTIFICATE-----
MIIHazCCBlOgAwIBAgIQCACFYvGiu7GwglRk6tzASTANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk
IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTIyMDMyOTAwMDAwMFoXDTIzMDQyOTIz
NTk1OVowgcsxEzARBgsrBgEEAYI3PAIBAxMCVVMxGTAXBgsrBgEEAYI3PAIBAhMI
RGVsYXdhcmUxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRAwDgYDVQQF
EwczMDA1MTkxMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEVMBMG
A1UEBxMMUmVkd29vZCBDaXR5MRUwEwYDVQQKEwxZb2RsZWUsIEluYy4xGDAWBgNV
BAMTD2F1dGhnYXRld2F5LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBALFAI3YNF/ZBwS1Rx3+GNegn3G2ajMCZ0MqAfsvleRl+R/t747hrSSQWWc1i
pJ2rJx48LZiE5KfQEswtZwzZ921r+pBSCRflkTEblr22B+okc5aGtXuecLZXPanG
iYROcaXs1XalR2yf9v5AInz7tGi9nN1hP8/oH/5VkRdD8OE+2NFiDKa94BM0+qYB
6dBi00hzVVA7u1K3rJ6cwW4iuZ74griirhJktPQmLongjTwLrO6eSzLwTmnxT5YW
7fLnAs0yRkiK5ke5uNp+vrdaAOV0dcX23fzpUA1jS35gctk8ghOYQIS0U0uqwe/k
bwrwXyYbNmlqn4SDdCEkBdsNinkCAwEAAaOCA54wggOaMB8GA1UdIwQYMBaAFD3T
UKXWoK3u80pgCmXTIdT4+NYPMB0GA1UdDgQWBBSY4hLClPOG4AorX57UT4csZ735
VzBPBgNVHREESDBGgg9hdXRoZ2F0ZXdheS5jb22CG2dhdGh4bWxzaWduLXByb2Qu
eW9kbGVlLmNvbYIWZ2F0aDJ3YXlzc2wueW9kbGVlLmNvbTAOBgNVHQ8BAf8EBAMC
BaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMHUGA1UdHwRuMGwwNKAy
oDCGLmh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWV2LXNlcnZlci1nMy5j
cmwwNKAyoDCGLmh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWV2LXNlcnZl
ci1nMy5jcmwwSgYDVR0gBEMwQTALBglghkgBhv1sAgEwMgYFZ4EMAQEwKTAnBggr
BgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMIGIBggrBgEFBQcB
AQR8MHowJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBSBggr
BgEFBQcwAoZGaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hB
MkV4dGVuZGVkVmFsaWRhdGlvblNlcnZlckNBLmNydDAJBgNVHRMEAjAAMIIBfQYK
KwYBBAHWeQIEAgSCAW0EggFpAWcAdgDoPtDaPvUGNTLnVyi8iWvJA9PL0RFr7Otp
4Xd9bQa9bgAAAX/U3G6AAAAEAwBHMEUCICALDhGyZ4nnzsaKyuQ+4J2yA9x9fj4+
TOdcSQM3nW8zAiEApeJnPvVkZXuR9jFuArAD42K5XvCmul+hmBh/RaN/vu0AdgA1
zxkbv7FsV78PrUxtQsu7ticgJlHqP+Eq76gDwzvWTAAAAX/U3G6tAAAEAwBHMEUC
ID7xX8MXHrTL85eJN3XQzLjdtNlXthAbzc0r6BqFp6FqAiEA6vIpcCLH+8bvLmD2
mNzu8GB37Kp8W0lToB5tUkA0O9YAdQCzc3cH4YRQ+GOG1gWp3BEJSnktsWcMC4fc
8AMOeTalmgAAAX/U3G7AAAAEAwBGMEQCIByrCXD6btmUH1zYsEaf9pcI45baw7bz
NeXRL+2jpJQQAiBRwbVPq2yeQ7Q5yYmyasyG18X2wj6uVgV7S0mJQEuBjzANBgkq
hkiG9w0BAQsFAAOCAQEAvMLSPBh0SQWeGVXFYicOC9oG5l7OkFii91SumjJa/GNf
tMdgYsCj2Je6djVJQ6wo8SQiD062xdcvw3nDQk4DkJBdDTe7AYzDO52qMnKKeM5u
gQkTnFoI1dqbNNm7nT9yj4cGuF09/AVleyrrV69D1xBMTGRZUnHF00Q7tnYr5bUT
6GuBunDlfdjemsE3wG6j7xhZFqoUlbNBT/OBX0oWRkKDtM2oqjppzoXQi4lT64vu
Jc58G/cx6GnE2J7C/4ryYcUHtMrkaxXueiA/fdWVysrg6qm4pNAfiI8KjjBPBFEY
PyarZjSSLTDf0mbmHCxCiElTDdwccv2hN5VHlzZG2w==
-----END CERTIFICATE-----

You can extract the public key by running this command:

openssl x509 -pubkey -noout -in certificate.pem

…which prints this output:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsUAjdg0X9kHBLVHHf4Y1
6CfcbZqMwJnQyoB+y+V5GX5H+3vjuGtJJBZZzWKknasnHjwtmITkp9ASzC1nDNn3
bWv6kFIJF+WRMRuWvbYH6iRzloa1e55wtlc9qcaJhE5xpezVdqVHbJ/2/kAifPu0
aL2c3WE/z+gf/lWRF0Pw4T7Y0WIMpr3gEzT6pgHp0GLTSHNVUDu7UresnpzBbiK5
nviCuKKuEmS09CYuieCNPAus7p5LMvBOafFPlhbt8ucCzTJGSIrmR7m42n6+t1oA
5XR1xfbd/OlQDWNLfmBy2TyCE5hAhLRTS6rB7+RvCvBfJhs2aWqfhIN0ISQF2w2K
eQIDAQAB
-----END PUBLIC KEY-----

You can save that to a file with a .pem extension (or use a Unix pipe command to output the above command directly to a named file).


Digital Project Dashboard

Digital Project Dashboard

The Digital project managers have built a new Digital Project Dashboard found here…You will need Google Drive access. This dashboard will show all running and recently completed projects, status, expected completion date and additional information


Banno Product Roadmap

https://banno-jha.atlassian.net/plugins/servlet/ac/com.almworks.jira.structure/structure-widget#!s:899

If you’ve wanted to see the priority rank for items on the Banno Product Roadmap we’ve got a new way to look at it in Structure that is easier than a bunch of filters. You can search within this list with either text or JQL. There are a few quick filters to view/hide projects based on public/internal roadmaps, proposed projects being prioritized, project type, and items in acceptance. Enjoy!


JH Enterprise Maintenance Calendar

(Requires VPN) https://tools1.jackhenry.com/maintenancecalendar/internal

The Jack Henry Enterprise Maintenance Calendar (EMC) for hosted products is now available for internal use. This internally developed solution displays product maintenance activities, such as disaster recovery exercises and releases, to customers via the ForClients portal.

It’s also incredibly useful for Jack Henry Associates when planning and scheduling change activities. Please start using and sharing this calendar internally. This will be released to select customers for testing today, with anticipated general availability for all customers on or about May 25th.

Note: Associates can see all activities, while customers see entries for only their hosted, installed products. The entries are maintained by select calendar admins across the Jack Henry product teams, and data validation is still underway. Associates can provide any feedback or discrepancies via the EMC – Change Enablement > Enterprise Maintenance Calendar channel.


Vendor Portal

The Vendor Portal is where 3rd party developers can open cases to get help on topics such as Enterprise Solutions (e.g. jXchange, SymXchange)

https://partner.jackhenry.com


Identicons

Quote from the homepage:

A visual language for identity

Royalty-free, free-to-use icons and clipart representing fundamental identity concepts. Use them in presentations, specifications and documentation.

https://identicons.dev


Google Meet (quick new meeting)

In case the ‘how do I start an ad-hoc Google Meet(ing)’ question comes up, this starts one immediately:

https://meet.google.com/new


Acronym Soup - Acronyms Commonly used at Jack Henry

https://eiskb.jhacorp.com/kb/article-2573.html

  • Requires you to be on the VPN to access.

Payments contacts

When we need to get help from folks in the Payments-as-a-Service organization:

If that fails, it looks like these folks are a good starting point:


Mixpanel

This is what replaced Google Analytics within the Banno digital banking UI itself.

  • Not necessarily a replacement for other areas (e.g. we may or may not ever migrate from Google Analytics to Mixpanel to track JackHenry.Dev usage).

Mixpanel + Jack Henry || Dashboard and Report Training

Links to existing analytics dashboards:


Users & Groups Permission Labels

This is the mappings between the Users & Groups permissions UI and the Node API Gateway enterprise auth checks.


Which Institutions opted-out of in-app Unmasked Account Numbers

The list of opt-outs

https://github.com/Banno/environments/blob/master/production/shared/kubernetes/discovery/accounts-api/environment_overrides_patch.yaml

You’ll want to look for the name BLACKLIST_INSTITUTIONS, which will have a value of a comma-delimited list of institutionIds.

Then you can use the other tool on this page, Find an Institution’s ID, to find the institution by its institutionId

Context:

If 3rd party developers are trying to use the Consumer API’s GET /users/{userId}/accounts/{accountId}/number endpoint to get the unmasked account number for an account, not only does the account need to be of a routable accountType/accountSubtype but that Financial Institution must not be on the list of institutions which have opted-out of displaying account numbers in-app within Banno Online / Banno Mobile.

Why?

Because if they opted-out of displaying account numbers in-app, the API is also not going to return an unmasked account number…even if one exists.

Excerpt from the API Reference, on JackHenry.Dev:

Note:

In late September 2019, financial institutions were given the opportunity to opt out of displaying account numbers in-app. If your financial institution opted out of displaying account numbers in-app, then this endpoint will not return the unmasked account number.

Example of where this has caused problems:

Take this thread in #ext-akoya-jackhenry in Slack where Akoya reports HTTP 404 Not Found responses by the API: https://banno.slack.com/archives/C04478V4TCG/p1721326419233759

…that led to this thread in #org-discovery in Slack where Engineering let us know that the financial institution had opted-out of displaying account numbers in-app. They also gave us the GitHub link which is the list of opt-outs above: https://banno.slack.com/archives/C01QT0NHZNW/p1721838994929019


JH Digital Brand Assets (Corporate)

https://brandfolder.com/jackhenryassociates


Teleprompter

https://cueprompter.com/teleprompter.php

A free, online teleprompter you can use if you need one for virtual presentations, recordings, etc.


Jack Henry brand guide

https://brandguides.brandfolder.com/jackhenry

This tool has logo guidelines, logo packs for download, usage guidelines, and more.

NOTE: We can send this to 3rd party developers, per jhDaily: https://jackhenry.sharepoint.com/sites/news/SitePages/Our-New-Brandguide-is-Now-Live.aspx


Largest U.S. Banks by Asset Size

Top 250 banks: https://www.mx.com/blog/biggest-banks-by-asset-size-united-states/


Largest U.S. Credit Unions by Asset Size

Top 250 credit unions: https://www.mx.com/blog/biggest-us-credit-unions-by-asset-size/


Platform Experience Vision

aka “Wall of Wonder” from PI Planning

https://www.figma.com/board/OVQ1G4ZwkaKeIkcoGR8uJQ/Platform-Experience-Vision?node-id=0-1&t=a0Xvcz12iZV2uYK1-1


Acquisition Inquiry Form

Used for submitting candidates for corporate acquisition.

https://forms.office.com/r/p7L1ArJyrT


JHA Ad-Hoc File Transfer

This is what we use when we send an encrypted email.

https://aft.jhahosted.com