# Deep Linking

LLMS index: [llms.txt](/llms.txt)

---

## Shareable URLs

Every PeopleSoft object in psLens has a permanent, shareable URL. Copy the address bar, paste it into a ticket or Slack, and anyone with psLens access lands on the same object in the same database.

PeopleSoft's native URLs are session-bound and cannot be shared or bookmarked reliably. psLens URLs can.

---

### URL Structure

All object URLs follow the same pattern:

```text
/resource/{identifier}?db={database}
```

- **`resource`** — the object type (e.g., `records`, `fields`, `permissionlists`)
- **`identifier`** — the object name as it appears in PeopleSoft (e.g., `JOB`, `EMPLID`, `HCDPALL0100`)
- **`db`** — the configured database name, so the link is unambiguous about which environment it points to

#### Linkable Object Types

psLens provides direct URLs for over 25 PeopleSoft object types:

|   Category   |                                                                                                                                                                              Objects                                                                                                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Security** | Permission Lists, Roles, Users                                                                                                                                                                                                                                                                                                                                     |
| **Objects**  | Projects, Project Import, Fields, Records, SQL Objects, Pages, Components, Component Interfaces, Menus, Content References (CREFs), Message Catalogs, Application Packages, URLs, HTML Definitions, Style Sheets, Queries, Query Trees, Nodes, Services, Service Operations, Messages, Queues, Application Engines, Process Definitions, Process Jobs, Recurrences |

Every object listed above can be linked to directly. For example:

- `/records/JOB?db=PROD` — the JOB record definition in your PROD database
- `/crefs/EMPLOYEE/PT_PORTAL_ROOT?db=PROD` — a content reference (CREF) in the EMPLOYEE portal in PROD
- `/permissionlists/HCDPALL0100?db=DEV` — a permission list in DEV
- `/serviceoperations/USER_PROFILE.v1?db=PROD` — a service operation in PROD

---

### Cross-Object Navigation

Detail pages link to related objects. When you view a record, the fields listed on that page link to their own detail pages. When you view a component, the pages within it are clickable. When you view a permission list, the roles that include it are linked.

This means you can navigate through the PeopleSoft object graph by clicking — from a record to its fields, from a field to the records that use it, from a component to its pages, and so on. Breadcrumbs at the top of each detail page show where you are in the hierarchy.

On Component detail pages, the portal navigation path shows clickable breadcrumb segments — each segment links to the CREF (Content Reference) definition for that folder or component, allowing you to navigate the portal registry hierarchy directly. The portal name itself links to browse all CREFs in that portal.

#### Clickable PeopleCode References

When viewing PeopleCode source code in psLens, references to Application Classes and Declared Functions are clickable.
- An Application Class reference (e.g. `PT_BRANDING:BrandingElement`) links directly to the corresponding Application Package page.
- A declared external function (e.g., `Declare Function Get_Schedule PeopleCode RECORD.FIELD Event`) links directly to the record field event containing the function definition.

---

### Deep Links with Pre-Expanded Sections

Some detail pages support query parameters that pre-expand specific sections. This is useful when you want to share a link that shows exactly the information someone needs to see.

For example, on a Record detail page:

|            Parameter            |               What it expands               |
| ------------------------------- | ------------------------------------------- |
| `show_pages=true`               | Pages that use this record                  |
| `show_peoplecode=true`          | PeopleCode programs attached to this record |
| `show_projects=true`            | Projects that include this record           |
| `show_components=true`          | Components that reference this record       |
| `show_parent_records=true`      | Parent record relationships                 |
| `expand_pc=FIELDNAME.EVENTNAME` | A specific PeopleCode event, fully expanded |

You can combine parameters:

```text
/records/JOB?db=PROD&show_peoplecode=true&expand_pc=EMPLID.FieldChange
```

This link opens the JOB record in PROD with the PeopleCode section expanded and the `EMPLID.FieldChange` event visible — one click to the exact code your colleague needs to review.

---

### Practical Use Cases

#### Audit and Compliance

In an audit workpaper, paste the psLens URL instead of a screenshot. The reviewer clicks through to the live object with no ambiguity about which permission list, which role, which version.

- Reference the exact permission list, role, or user profile in an audit finding
- Cite the exact URL in the finding; six months later the reviewer can re-open it
- Eliminate the "which screen was that?" problem when revisiting findings months later

#### Incident Response and Troubleshooting

Instead of typing "open App Designer, find project XXXX, look at record YYYY," paste a link into Slack or your incident channel. Everyone on the call arrives at the same view instantly.

- Share the exact service operation that is failing
- Link to the process definition that is stuck
- Point teammates to the specific record or component under investigation

#### Change Management

When documenting changes in ServiceNow, Jira, or any ticketing system, include psLens links to the objects affected by the change.

- Link to the project definition to show exactly what objects are included in a release
- Reference specific components or records in change request descriptions
- Build runbooks with clickable links instead of navigation instructions

#### Security Reviews

Security administrators can share direct links to the objects under review, making it easy for reviewers to verify configurations without navigating there themselves.

- Link to permission lists with `show_components=true` to show what access they grant
- Share user profile links showing role assignments
- Reference exact objects in security audit reports and remediation tickets

#### Team Collaboration

A business analyst on the change call doesn't need App Designer open. Paste the link, they see the record.

---

### Markdown Export

Every PeopleSoft object detail page in psLens can export its full definition as a Markdown file. This exported file can be attached to documentation, included in a wiki, or stored alongside change records. Combined with deep links, you get both a static snapshot and a live reference back to psLens.

Look for the **Export as Markdown** card in the right-hand sidebar of any object detail page — records, fields, pages, components, menus, application packages, app engines, component interfaces, SQL objects, URLs, HTML and stylesheet definitions, projects, queries, query trees, message catalogs, CREFs, nodes, services, service operations, messages, queues, permission lists, roles, users, process definitions, process jobs, and recurrences.

#### Recursive PeopleCode Resolution

For objects containing PeopleCode (such as records, components, application packages, and app engines), the export card includes a **Recursively resolve imports** toggle. When enabled, psLens parses the source code for Application Class imports and external function declarations. It recursively retrieves the source code of those referenced classes and functions from the database and appends them to a dedicated references section in the exported document.
