Description
The Obsidian Calendar Event Item Occurrence List block (Rock.Blocks/Event/EventItemOccurrenceList.cs) does not use the friendly route of the configured Registration Instance Page when linking to a registration instance.
Actual Behavior
On the Event Detail page (web/calendars/{id}/event/{id}), the "Calendar Event Item Occurrence List" block (Obsidian, BlockType 356, instance 656 on page 396) renders a grid of event occurrences. Its Registration column links to the configured Registration Instance Page (page 404) — but always as the fallback URL /page/404?RegistrationInstanceId=XYZ instead of the friendly route /RegistrationInstance/XYZ, even though page 404 has that route configured.
Root cause (in Rock's core block code, Rock.Blocks.Event.EventItemOccurrenceList):
Server-side, the block builds the base URL via GetLinkedPageUrl( "RegistrationInstancePage" ) without passing any parameters. Rock's PageReference.BuildUrl() only uses a page route when all of the route's {parameters} are supplied — with zero parameters, route matching fails and it falls back to the literal page/404.
Client-side (eventItemOccurrenceList.obs), the Registration link then hard-codes the ID as a query string: href = registrationInstancePageUrl + "?RegistrationInstanceId=" + row.registrationInstanceId.
Result: https://rocksolidchurchdemo.com/page/404?RegistrationInstanceId=QDAjpxdjB5 — correct destination, wrong URL shape. The setting pointing to page 404 is correct; the block simply never engages the route system for this link. (Notably, the same block does it correctly for row-click navigation to the occurrence Detail page, passing a ((Key)) placeholder through route substitution.)
Expected Behavior
Accessing the registration instance from any other block seems to work. Such as the Calendar Item campus Detail.
Steps to Reproduce
`
How to Link Registration Instances to Church Calendars
Made by Luke Quinlivan with Scribe
Learn how to efficiently link specific registration instances to your church calendar events. This guide streamlines the process of managing event details and registrations within your platform to keep your church activities organized.

Open Event Calendar


4. Click the Rock Solid Finances Class event.

5. Click the Rock Solid Finances Class occurrence.

Edit Event Occurrence


8. Click "Use Existing Registration Instance"

9. Select Summer Camp as the registration template.


10. Type "Test" in the Public Name field.



Verify Registration Link
13. Click "Rock Solid Finances Class"

14. Click "Summer Camp 2019"

``
Issue Confirmation
Rock Version
19.2
Client Culture Setting
en-AU
Description
The Obsidian Calendar Event Item Occurrence List block (Rock.Blocks/Event/EventItemOccurrenceList.cs) does not use the friendly route of the configured Registration Instance Page when linking to a registration instance.
Actual Behavior
On the Event Detail page (web/calendars/{id}/event/{id}), the "Calendar Event Item Occurrence List" block (Obsidian, BlockType 356, instance 656 on page 396) renders a grid of event occurrences. Its Registration column links to the configured Registration Instance Page (page 404) — but always as the fallback URL /page/404?RegistrationInstanceId=XYZ instead of the friendly route /RegistrationInstance/XYZ, even though page 404 has that route configured.
Root cause (in Rock's core block code, Rock.Blocks.Event.EventItemOccurrenceList):
Server-side, the block builds the base URL via GetLinkedPageUrl( "RegistrationInstancePage" ) without passing any parameters. Rock's PageReference.BuildUrl() only uses a page route when all of the route's {parameters} are supplied — with zero parameters, route matching fails and it falls back to the literal page/404.
Client-side (eventItemOccurrenceList.obs), the Registration link then hard-codes the ID as a query string: href = registrationInstancePageUrl + "?RegistrationInstanceId=" + row.registrationInstanceId.
Result: https://rocksolidchurchdemo.com/page/404?RegistrationInstanceId=QDAjpxdjB5 — correct destination, wrong URL shape. The setting pointing to page 404 is correct; the block simply never engages the route system for this link. (Notably, the same block does it correctly for row-click navigation to the occurrence Detail page, passing a ((Key)) placeholder through route substitution.)
Expected Behavior
Accessing the registration instance from any other block seems to work. Such as the Calendar Item campus Detail.
Steps to Reproduce
`
How to Link Registration Instances to Church Calendars
Made by Luke Quinlivan with Scribe
Learn how to efficiently link specific registration instances to your church calendar events. This guide streamlines the process of managing event details and registrations within your platform to keep your church activities organized.
1. Navigate to https://rocksolidchurchdemo.com/
Open Event Calendar
2. Click "Calendars"
3. Click "Public"
4. Click the Rock Solid Finances Class event.
5. Click the Rock Solid Finances Class occurrence.
Edit Event Occurrence
6. Click "Edit"
7. Click "Add Linkage"
8. Click "Use Existing Registration Instance"
9. Select Summer Camp as the registration template.
10. Type "Test" in the Public Name field.
11. Click "Save"
12. Click "Save"
Verify Registration Link
13. Click "Rock Solid Finances Class"
14. Click "Summer Camp 2019"
[Made with `Scribe](https://scribehow.com/o/8825UyLjTRSHptL1uR2n5g/viewer/How_to_Link_Registration_Instances_to_Church_Calendars__UbM2Rn_8TWK6kNpzrjHBmg)
``
Issue Confirmation
Rock Version
19.2
Client Culture Setting
en-AU