# Site Settings & Administration

## Table of Contents

* [Overview](#overview)
* [Getting Started](#getting-started)
* [Site Administration Interface](#site-administration-interface)
  * [Menus Tab](#menus-tab)
  * [Routes Tab](#routes-tab)
  * [AI Chatbot Tab](#ai-chatbot-tab)
  * [Settings Tab](#settings-tab)
* [Site-Wide Settings](#site-wide-settings)
  * [General Settings](#general-settings)
  * [Session and Timeout Settings](#session-and-timeout-settings)
  * [Maintenance and Access Settings](#maintenance-and-access-settings)
  * [Google Services Settings](#google-services-settings)
  * [Power BI Integration Settings](#power-bi-integration-settings)
  * [MicroStrategy Integration Settings](#microstrategy-integration-settings)
  * [Public Site Navigation Settings](#public-site-navigation-settings)
  * [Debug and Advanced Settings](#debug-and-advanced-settings)
  * [Migration Settings](#migration-settings)
  * [Publish Settings](#publish-settings)
* [Site Reports](#site-reports)
  * [Viewing Site Reports](#viewing-site-reports)
  * [Running a Report](#running-a-report)
* [Common Scenarios](#common-scenarios)
* [Troubleshooting](#troubleshooting)

## Overview

Site Settings & Administration is the central control panel for managing the OtisEd.Nimble portal at the system level. From here, authorized administrators can configure how the portal behaves for all users — including session timeouts, maintenance windows, alert messages, third-party service connections, and navigation menus. The Site Administration area also provides access to site-wide reports that span the entire portal rather than a specific organization or program.

Changes made in Site Settings apply to the entire tenant (your organization's instance of the portal) and take effect immediately for all users.

> **Report page container visibility** — controlling which containers appear for each organization on a report page (including no-data placeholders and suppression messages) is configured through the `AppReportGroupContainerVisibility` table, not through Site Settings. See [Container-Level Visibility](/guides/container-level-visibility.md) for the full configuration reference.

## Getting Started

To access Site Administration, you must have the **Site Settings** permission assigned to your account. Contact your system administrator if you do not see the Site Administration option in the navigation menu.

To navigate to Site Administration:

1. Sign in to the portal.
2. In the navigation menu, select **Site Administration**.
3. The Site Administration page opens with a tabbed interface showing the areas you have access to.

## Site Administration Interface

The Site Administration page is organized into tabs: **Menus**, **Routes**, **AI Chatbot**, and **Settings**. Each tab controls a different aspect of the portal.

### Menus Tab

The Menus tab lets you manage the navigation menus that users see throughout the portal. Menus are organized in a hierarchy — root menus appear at the top level of navigation, and each menu can have child menus nested beneath it.

**Viewing menus**

The Menus tab shows two sub-tabs: **Active** and **Inactive**. Active menus are visible to users (subject to their permissions). Inactive menus are hidden from all users but remain in the system.

The menu list shows each menu's display order, name, path or external URL, and how many child menus it contains. Click a menu name to edit it, or use the breadcrumb trail at the top to navigate back up the hierarchy.

**Adding a new menu**

1. In the Menus tab, click **Add New Menu**.
2. In the dialog that opens, enter the following fields:
   * **Name** (required) — the label users will see in the navigation.
   * **Icon** — an optional icon identifier to display next to the menu label.
   * **Route** — select an existing portal route from the dropdown to link this menu to an internal page.
   * **External URL** — if you do not select a route, you can enter a full URL for an external link.
   * **Target** — choose whether the link opens in the **Same Window** or a **New Window**.
   * **Parameters** — optional URL parameters to append when navigating to the route.
   * **Active** — toggle on to make the menu visible immediately.
3. Click **Save**.

**Adding a child menu**

To add a menu nested under an existing menu, click the **Add Child Menu** action icon on the parent menu row. The new menu form opens with the parent already set.

Alternatively, click on a menu name to drill into its children, then click **Add New Menu** from within that level.

**Editing a menu**

Click the **Edit** icon on any menu row to update its name, icon, route assignment, target, or active status.

**Reordering menus**

When a level contains more than one menu, a **Sort Menus** button appears. Click it to drag menus into the desired display order, then click **OK** to save the new order.

**Activating and deactivating menus**

Click the checkmark icon on a menu row to toggle its active status. A confirmation prompt appears before the change is applied.

**Deleting a menu**

Menus that have no child menus can be deleted by clicking the **Delete** icon. A confirmation prompt appears before deletion. Menus with children must have their children removed first.

**Managing menu permissions**

Click the **Permissions** icon on a menu row to control which roles can see that menu. In the permissions dialog, move roles from the **Available** column into the **Restricted** column to limit visibility to only those roles. If no roles are in the Restricted column, the menu is visible to all authenticated users. Click **Submit** to save.

### Routes Tab

Routes define the pages that exist in the portal. Each route connects a URL path (such as `/reports`) to the component that renders that page. The Routes tab lets administrators view all routes, control which are active, manage their display names, and set access permissions.

**Viewing routes**

Routes are shown in two sub-tabs: **Active** and **Inactive**. Each row shows the route name, internal ID, URL path, and the component it renders.

**Editing a route**

Click the **Edit** icon on a route row to update its display name. The path and component fields are read-only and cannot be changed from this interface.

**Activating and deactivating routes**

Click the checkmark icon to toggle a route's active status. Note that the `/siteadmin` route cannot be deactivated — a message will inform you if you attempt to do so.

**Setting route permissions**

Click the **Permissions** icon on a route row to restrict access to specific roles. This works the same way as menu permissions: add roles to the Restricted column to limit access, or leave it empty to allow all authenticated users. Click **Submit** to save.

**Viewing modules for a route**

Click the **Modules** icon on a route row to see the sub-components (modules) registered for that route. Each module can also have its own permissions set independently by clicking the **Permissions** icon in the module list.

### AI Chatbot Tab

The AI Chatbot tab provides access to the chatbot configuration settings. From here, administrators can enable or disable the chatbot, configure its identity and behavior, set up Azure AI Search and Azure OpenAI connections, and manage the data sync schedule. See the [AI Chatbot](/guides/ai-chatbot.md) guide for full details on all chatbot settings.

### Settings Tab

The Settings tab is reserved for additional site-wide configuration options. This area is currently under development.

## Site-Wide Settings

Site-wide settings are managed separately from the Site Administration tabs, through the ABP **Settings Management** page. These settings control the core behavior of the portal for all users. Only users with the **Site Settings** permission can view and update these values.

The settings page is organized into clearly labeled sections with styled headers for easy navigation.

### General Settings

* **Self URL** — the base URL of the portal (for example, `https://portal.youragency.edu`). This is used when the portal needs to reference itself in links or redirections.
* **Logout Redirect** — the URL users are sent to after signing out.
* **Home Page Logo Link** — the URL the portal logo links to on the home page.
* **Page Max Width** — sets the maximum width of page content (in CSS units, for example `1400px`). Leave blank to use the default browser behavior.
* **Alert Message** — a site-wide alert banner displayed to all users at the top of the portal. Use this for time-sensitive announcements. Clear the field to remove the alert.

### Session and Timeout Settings

These settings control how long users can remain idle before being automatically signed out.

* **Browser Close Delay** — the number of seconds the system waits after detecting a browser close event before processing the logout.
* **Session Timeout** — the number of minutes of inactivity before a user is automatically signed out. Set to `0` to disable automatic timeout.
* **Session Warning** — the number of minutes before session expiration at which the user receives a warning prompt. The user can click **OK** to extend their session.
* **Show Session Timeout** — when enabled, the session timeout warning dialog is shown to users. When disabled, users are signed out silently without a warning.
* **Public Redirect Timeout** — the number of seconds before an anonymous user on a public page is automatically redirected to the login page.

### Maintenance and Access Settings

* **Maintenance** — toggle this on to put the portal into maintenance mode. All users (except those with administrator access) will see the maintenance page instead of the portal.
* **Maintenance Message** — the message displayed to users while the portal is in maintenance mode. Supports HTML formatting for rich text. If left blank, a default maintenance message is shown.
* **Public Accessible** — when enabled, unauthenticated (anonymous) users can access certain public areas of the portal.

### Google Services Settings

* **Google Maps API Key** — the API key used to display embedded Google Maps within the portal. Required for any features that render maps.
* **Enable Google Translate** — when enabled, a Google Translate widget is shown in the portal, allowing users to translate content into other languages. Spanish is the default alternate language.

### Power BI Integration Settings

The portal supports embedding Power BI reports. These settings configure the Azure Entra (Azure AD) service principal used to access Power BI.

* **Power BI Entra Application ID** — the Application (Client) ID of the Azure app registration.
* **Power BI Entra Tenant ID** — the Directory (Tenant) ID of the Azure Active Directory.
* **Power BI Default Workspace ID** — the GUID of the default Power BI workspace from which reports are loaded.
* **Power BI Entra Client Secret** — the client secret for the Azure app registration. For security, this value is never displayed after it is saved. A checkmark indicates whether a secret is currently configured. Enter a new value to replace it, or leave the field at its default to keep the current value.

### MicroStrategy Integration Settings

The portal integrates with MicroStrategy for report delivery. These settings configure the connection between the portal and MicroStrategy.

* **MS Path** — the base path to the MicroStrategy application server.
* **MS Authentication URL** — the URL used to authenticate sessions with MicroStrategy.
* **MS Username / MS Password** — the service account credentials used to connect to MicroStrategy on behalf of users.
* **MS Session Timeout** — how long a MicroStrategy session remains active (in minutes).
* **MS Public Path** — the MicroStrategy path for unauthenticated (public) access.
* **MS Public Logins** — the login credentials used for public MicroStrategy sessions.
* **MS Download Path** — the path from which MicroStrategy report exports (downloads) are retrieved.
* **MS DC Forms Download URL** — the URL for downloading data collection forms from MicroStrategy.
* **MS School Profile Download URL** — the URL for downloading school profile data from MicroStrategy.
* **Report Show Delay** — the number of milliseconds to wait before displaying reports, used to ensure data is fully loaded.
* **Current Year Overall Performance Rating** — a toggle that enables or disables the display of current-year overall performance ratings across the portal.

> These settings contain sensitive credentials. Only authorized system administrators should configure them.

### Public Site Navigation Settings

These settings control how the public-facing areas of the portal are navigated by anonymous visitors.

* **Public Site Menu ID** — the numeric ID of the menu group that drives the public navigation bar and, on supported deployments, the home-page explore cards. Set this to the ID of the parent menu you have configured for public navigation. When this value is present, the public home page and navbar are built entirely from that menu's child items. See [Public Pages](/guides/public-pages.md) for details on configuring the menu structure.

> Previously this field appeared under the MicroStrategy section with the label "Microstrategy Public Menu Id". It has been moved here and renamed for clarity. The underlying setting key is unchanged, so any value already saved in your database continues to apply.

### Debug and Advanced Settings

* **Debug Users** — a comma-separated list of user IDs that have access to debugging tools. Only relevant for developers and advanced support staff.
* **Server Time Zone** — the time zone used by the server for date and time calculations.

### Migration Settings

* **Migrate Target Name** — a display name identifying the migration target environment (for example, "Production Archive").
* **Migrate Connect String** — the database connection string for the migration target. For security, the existing value is never displayed. Enter a new value to replace it, or leave the field at its default to keep the current value.

> Connection strings are treated as sensitive credentials and are never returned by the portal in any response. To clear an existing connection string, use the clear option in the settings form.

### Publish Settings

* **Publish Target Name** — a display name identifying the publish target database.
* **Publish Connect String** — the database connection string for the publish target. The system validates this connection before saving to ensure the target database is reachable.

> Connection strings are treated as sensitive credentials and are never returned by the portal in any response. To clear an existing connection string, use the clear option in the settings form.

## Site Reports

Site Reports are pre-configured reports that run at the system level, spanning data across the entire portal rather than a specific organization. They are accessible from the portal's reporting section and do not require an organization context.

### Viewing Site Reports

The site reports list shows all configured site-level reports. Each report has a name, description, and a defined set of filters and columns.

### Running a Report

1. Navigate to the site reports section of the portal.
2. Select the report you want to run.
3. The report opens with its filter panel. Fill in the available filter fields:
   * **Dropdown filters** — select a value from the list.
   * **Date filters** — enter or select a date. Filters configured with a relative date offset (for example, "30 days ago") are pre-populated automatically.
   * **Text filters** — type a value to narrow results.
4. Click **Run** (or the report's submit action) to execute the report.
5. Results are displayed in a table. The header above the results shows a summary such as "Found 1,234 records for \[filter values]".

Columns shown in the results are defined per report and vary based on the report's configuration.

## Common Scenarios

**Taking the portal offline for a scheduled maintenance window**

1. Navigate to Site Settings.
2. Set a descriptive **Maintenance Message** explaining the outage and expected return time.
3. Toggle **Maintenance** on and save.
4. When maintenance is complete, toggle **Maintenance** off and save.

**Displaying an alert to all users**

1. Navigate to Site Settings.
2. Enter the announcement text in the **Alert Message** field and save.
3. The alert appears at the top of the portal for all users immediately.
4. To remove the alert, clear the **Alert Message** field and save.

**Restricting a menu to specific user roles**

1. Navigate to Site Administration and open the **Menus** tab.
2. Find the menu you want to restrict and click its **Permissions** icon.
3. In the permissions dialog, move the roles that should have access into the **Restricted** column.
4. Click **Submit**. Users without those roles will no longer see the menu.

**Adding a new top-level navigation menu**

1. Navigate to Site Administration and open the **Menus** tab.
2. Ensure you are at the root level (breadcrumb shows "Root Menus").
3. Click **Add New Menu**.
4. Fill in the name, select the destination route, and set the display order by saving with the current count plus one as the sort order (or use **Sort Menus** after adding).
5. Click **Save**.

**Rotating the Power BI client secret**

1. Navigate to Site Settings and scroll to the Power BI section.
2. Enter the new secret in the **Power BI Entra Client Secret** field.
3. Save the settings. The new secret takes effect immediately for subsequent Power BI report loads.

**Updating the public navigation menu**

1. Navigate to Menu Admin and configure a parent menu with the child items you want to appear on the public home page and in the public navbar. Each child item should have a name, an icon image path, and either a route or an external URL.
2. Note the numeric ID of the parent menu (visible in the menu record).
3. Navigate to Site Settings and scroll to the **Public Site Navigation** section.
4. Enter the parent menu's ID in the **Public Site Menu ID** field and save.
5. The public home page and navbar update immediately for all visitors.

## Troubleshooting

**The portal shows a maintenance page but I did not enable maintenance mode.** Check the **Maintenance** toggle in Site Settings. If it is on and you did not intend to enable it, toggle it off and save. Also verify the **Maintenance Message** field in case a previous administrator set a message.

**Users are being logged out unexpectedly.** Review the **Session Timeout** and **Session Warning** values in Site Settings. If Session Timeout is set to a very short value (for example, 5 minutes), users on slower networks may time out before completing their work. Increase the timeout value and save.

**The session warning dialog is not appearing before logout.** Check that **Show Session Timeout** is toggled on in Site Settings. If it is off, users are signed out silently without a warning.

**A menu I created is not visible to any users.** Verify that the menu's **Active** status is turned on. Also check the menu's permissions — if roles are listed in the Restricted column, only users with those roles will see it.

**The portal cannot connect to the publish target database.** When you save publish settings, the portal validates the connection string against the target database. If validation fails, you will see an error message with details. Confirm that the connection string is correctly formatted, the target server is reachable from the portal server, and the credentials have the necessary database access.

**Power BI reports are not loading.** Verify that all three Power BI fields are filled in (Application ID, Tenant ID, and Default Workspace ID) and that a client secret is configured (the indicator will show a checkmark if one is saved). If the secret has recently expired, enter a new one from your Azure app registration.

**The public home page shows no navigation items or explore cards.** Verify that the **Public Site Menu ID** in the Public Site Navigation section is set to the correct parent menu ID. Confirm that the menu has active child items and that each child has a name configured. See [Public Pages](/guides/public-pages.md) for the full menu structure requirements.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nimble.docs.otised.com/guides/site-settings-administration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
