Iris Portal Configuration Settings

The Iris Portal is the front-end gateway for Olympus-Grid’s micro-frontend architecture. It enables dynamic routing of domain-based requests to appropriate static resource bundles, allowing virtually unlimited site deployments from a single configuration file.

The configuration allows a flexible front-end routing engine for Olympus-Grid that enables micro-frontend rendering across multiple domains and namespaces using declarative routing rules. Its core power lies in its ability to host unlimited client-facing sites through a single JSON configuration file, with clean separation of resources and namespaces.

This document outlines all configuration options available within the Iris Portal JSON model, including default settings, router rules, and architectural considerations.

Default Site Settings

{
  "pageTitle": "Iris | Olympus-Grid",
  "portalName": "Iris",
  "bundleNamespace": "",
  "bundleResource": "portal",
  "allowedOrigins": "https://app.olympus-grid.com\nhttps://support.olympus-grid.com",
  "crossSiteAuthProvider": "https://auth.olympus-grid.com",
  "allowCrossSiteAuth": true,
  "proteusLeadObject": "sfLead",
  "allowBundleDomain": true,
  "bannerTimeOff": "2025-01-22 11:58:00",
  "bannerTimeOn": "2025-01-20 11:58:00",
  "bannerCanClose": true,
  "textColor": "#000000",
  "bannerColor": "#FFAB00",
  "bannerText": "We are performing scheduled maintenance on 01/25/2026. We should be back online shortly after the maintenance.",
  "banner": true,
  "maintenanceMode": true,
  "maintenanceImageUrl": "https://smearch-media-dev-us-west-2.s3.us-west-2.amazonaws.com/public/assets/img/portal.jpg",
  "maintenanceModeText": "Temporarily Down for Maintenance",
  "maintenanceModeSubText": "We are performing scheduled maintenance. We should be back online shortly.",
  "maintenanceModeCanClose": true,
  "maintenanceModeBypass": "portal",
  "bundleId": ".jlxlpcnf"
}

Portal Metadata

Key
Type
Description

pageTitle

string

Sets the page’s browser tab title. Example: `"Iris

portalName

string

Short display name for the portal (used in branding and headers). Example: "Iris"

Bundle Configuration

Key
Type
Description

bundleResource

string

The name of the resource bundle to load. Example: "portal"

bundleNamespace

string

Namespace under which the bundle is loaded. An empty string ("") implies default behavior or legacy mode.

bundleId

string

Optional bundle version or identifier (e.g., a cache buster or build hash). Example: ".jlxlpcnf"

allowBundleDomain

boolean

Whether to allow loading of resource bundles from domains (e.g., CDNs or external asset sources).

Cross-Site Authentication Settings

Key
Type
Description

allowedOrigins

string (newline-separated list)

Specifies the origins allowed to interact with this portal. Each origin must be listed on a new line. Example:https://app.olympus-grid.comhttps://support.olympus-grid.com

crossSiteAuthProvider

string

URL of the external authentication provider used for cross-site login. Example: https://auth.olympus-grid.com

allowCrossSiteAuth

boolean

Enables (true) or disables (false) cross-site authentication.

Maintenance Configuration

Key
Type
Description

maintenanceMode

boolean

Enables maintenance mode. When true, users may see a maintenance screen.

maintenanceImageUrl

string

URL to a branded image shown during maintenance.

maintenanceModeText

string

Headline text shown during maintenance. Example: "Temporarily Down for Maintenance"

maintenanceModeSubText

string

Additional explanation text.

maintenanceModeCanClose

boolean

Allows users to dismiss the maintenance overlay, if supported.

maintenanceModeBypass

string

Path or keyword that bypasses maintenance mode (e.g., for internal or admin access).

Key
Type
Description

banner

boolean

Enables the banner message UI.

bannerText

string

Message displayed to users. Often used for maintenance notifications.

bannerColor

string

Background color for the banner, in hex format. Example: "#FFAB00"

textColor

string

Text color used within the banner. Example: "#000000"

bannerCanClose

boolean

Allows users to dismiss the banner manually.

bannerTimeOn

string

Time when the banner becomes visible (format: YYYY-MM-DD HH:mm:ss).

bannerTimeOff

string

Time when the banner is hidden.

Routing Rules

Router rules dynamically determine which static bundle to serve based on domain and traffic conditions. Each rule is evaluated in order of sequence.

{
  "description": "100% traffic from domain",
  "sequence": 100,
  "active": true,
  "conditions": {
    "domain": "app.olympus-grid.com",
    "ip": "39.37.187.50",
    "header": "header[x-user-role] = VIP",
    "cookie": "cookie[ab] = A"
  },
  "percent": 100,
  "bundleResource": "portal",
  "bundleNamespace": "og_node_beta_1",
  "startTime": "2025-07-31T19:00:00.000Z",
  "endTime": "2025-09-29T19:00:00.000Z",
  "maintenanceMode": true,
  "maintenanceImageUrl": "https://smearch-media-dev-us-west-2.s3.us-west-2.amazonaws.com/public/assets/img/portal.jpg",
  "maintenanceModeText": "Temporarily Down for Maintenance",
  "maintenanceModeSubText": "We are performing scheduled maintenance. We should be back online shortly.",
  "maintenanceModeCanClose": true,
  "maintenanceModeBypass": "portal",
  "banner": true,
  "bannerText": "We are performing scheduled maintenance on 01/25/2026. We should be back online shortly after the maintenance.",
  "bannerColor": "#FFAB00",
  "bundleDomain": "https://d360pm4g7qodzt.cloudfront.net/assets/iris/olympus_grid/PROD",
  "bundleId": ".jlxlpcnf"
}

Router Rule Settings

General Settings

Key
Type
Description

description

string

Human-readable name for the configuration scenario. Useful for admin visibility and debugging. Example: "100% traffic from domain"

sequence

number

Priority order when evaluating multiple rules. Lower values have higher priority.

active

boolean

Whether this configuration is currently enabled. If false, it will be ignored even if conditions match.

percent

number

Percentage of eligible users (matching the conditions) to whom this configuration will apply. Example: 100 = apply to all matched users.

Targeting Conditions

These define who will receive the configuration based on request attributes.

Key
Type
Description

conditions.domain

string

Domain the request must originate from. Example: "app.olympus-grid.com"

conditions.ip

string

IP address filter to restrict the configuration to specific clients. Example: "39.37.187.50"

conditions.header

string

HTTP header condition used for feature targeting (e.g. user roles, client version). Example: "header[x-user-role] = VIP"

conditions.cookie

string

Cookie-based targeting for A/B testing or personalized experiences. Example: "cookie[ab] = A"

Bundle Configuration

These keys define what frontend bundle to load and where to fetch it from.

Key
Type
Description

bundleResource

string

Identifier for the application module. Example: "portal"

bundleNamespace

string

Logical namespace to separate bundles (e.g. environment-specific: dev, beta, prod). Example: "og_node_beta_1"

bundleDomain

string

Full CDN or asset domain for serving bundle resources. Example: CloudFront URL for production bundles.

bundleId

string

Optional unique identifier or hash used to differentiate bundle versions. May support cache busting or version locking. Example: ".jlxlpcnf"

Time-Based Activation

Key
Type
Description

startTime

ISO 8601 string

UTC time at which the configuration becomes active. Example: "2025-07-31T19:00:00.000Z"

endTime

ISO 8601 string

UTC time after which the configuration is deactivated. Example: "2025-09-29T19:00:00.000Z"

Maintenance Configuration

This section customizes the look and logic of the maintenance experience for users affected by this configuration.

Field
Value
Description

maintenanceMode

true

Enables the maintenance overlay.

maintenanceImageUrl

URL to a hosted image

Provides a branded maintenance visual.

maintenanceModeText

"Temporarily Down for Maintenance"

Headline message during downtime.

maintenanceModeSubText

"We are performing scheduled maintenance..."

Further explanation for users.

maintenanceModeCanClose

true

Users can close/dismiss the message (if UI supports it).

maintenanceModeBypass

"portal"

Allows internal access via a known bypass path for devs or admins.

Key

Type

Description

banner

boolean

Enables the banner notification UI element.

bannerText

string

Content of the banner. Often used for downtime warnings or system status.

bannerColor

string

HEX color for the banner’s background. Example: "#FFAB00"

Micro Front-End Architecture

Each route can serve a completely different application (or version) via:

  • Same Namespace: Default bundles deployed in the host org.

  • Cross-Namespace: Serve bundles from other managed packages.

  • Development Mode: If allowBundleDomain is true, the bundle can come directly from the developers local workstation supporting rapid development with hot reloading.

This makes it easy to:

  • White-label portals per customer

  • A/B test frontend bundles

  • Canary or multi-variable testing

  • Roll out region-specific portals

  • Allow customers to own their own deployment

  • Runtime switching between versions

  • Seamless multitenant experiences

  • Allow react developers to iterate faster than ever

All from a single Force.com Site (or Digital Experience)

Sticky Sessions

Once a routing rule has responded with a bundle, that bundle will continue to be served without further evaluation of the routing rules for the duration of the sticky session (currently 24 hours).

  • To remove the sticky session manually, delete the bundleResource cookie

SSL Certificate Considerations

Salesforce currently supports a maximum of 50 active SSL certificates per org. To scale beyond this:

  • Use wildcard certificates (e.g., *.olympus-grid.ai) (if supported by Salesforce)

  • Delegate some routing to CloudFront or other CDNs

  • Utilize the Salesforce domain name endpoint which is already protected by TLS

  • Consider routing low-traffic or internal domains without SSL termination at Salesforce

Best Practices

  • Use consistent domain naming (e.g., region.client.olympus-grid.ai)

  • Keep bundleNamespace blank for client-hosted bundles

  • Apply sequence carefully to ensure fallbacks are respected

  • Use percent for rolling deployments or canary testing

Known Limitations

Constraint
Current Limit
Notes

SSL Certificates

50

Limited by Salesforce certificates for custom domains. Consider using a wildcard or external CDN (if supported)

Rule Count

Not hard-limited

Practical limit depends on performance and deployment size.

Static Resource Size

5MB per file

Use GZIP + modular bundling.

Salesforce does not support installing full certificate chains (i.e., root + intermediate certs). Only the main certificate.pem file is supported, and it's expected to be leaf-only. As a result, some browsers or org-level security tools may flag certificates as incomplete or untrusted because they can’t verify the full chain when hitting a Salesforce-hosted domain (e.g., *.force.com, *.live.siteforce.com).

⚠️ Corporate networks with strict SSL validation might show warnings.

⚠️ Browsers may display untrusted certs if intermediate roots are missing and cannot be inferred.

Most modern systems will still work, since browsers typically cache or infer the root chain.

We have not encountered issues, however some browsers or organizational policies may flag security warnings. Workaround:

  • Use CDNs like CloudFront or Cloudflare to terminate SSL externally, where you can install full chains.

Last updated