v18.3 Release Notes

  • Group: Fixed incorrect handling of InactiveDateTime and ArchivedDateTime so RockCleanup job adds and removes values as expected.

  • Event: Updated the Event Registration Template block's handling of Show On Wait List option for registrant fields. It will now require that FirstName and LastName fields always be Show On Wait List. When adding new fields they will now default to Show On Wait List. This is intended to reduce accidental missing data due to a misconfigured template.

  • Group: Fixed an issue in the Obsidian Group Requirement Type Detail block that caused Attribute Values to not load or save correctly when editing a requirement type. This prevented individuals from configuring or updating Group Requirement Types as expected.

  • Reporting: Fixed an issue where the Attendance Analytics block incorrectly included groups whose Group Type was listed as an "Allowed Child Group Type" of a selected Group Type, even though it was not explicitly selected in the block settings. The block now includes only groups whose Group Types are directly selected.

  • Core: Fixed responsive layout issues in Person Signal List block so certain columns don't hide at narrow widths.

  • Communication: Fixed an issue where the Obsidian Communication Entry Wizard block did not enforce the allowed Communication Types configured in block settings when a Communication was started from outside the wizard (e.g., when using a grid's "Communicate" action). This allowed individuals to create a Communication outside the permitted types, potentially bypassing communication policies.

  • CMS: Fixed various Obsidian buttons that could be accidentally triggered by pressing the Enter key in an unrelated text input field.

  • Communication: Fixed issues with file links in the Obsidian Communication Entry wizard. File Browser links with spaces now work correctly, and the editor no longer adds "https://" to links that don't need it.

  • Security: Fixed an issue in the Account Entry Block where phone number field labels were not visible on mobile devices, making it difficult to understand which phone number was being entered.

  • Communication: Fixed an issue where saving a Communication Template from the Communication Wizard failed if the template name included special characters. The preview image generation used the template name for the file, which caused an error on systems that don't allow certain characters. Template names are now cleaned up automatically to prevent this issue.

  • Communication: Fixed an issue where the Communication Entry Wizard block did not automatically select the SMS From Number assigned to the logged-in individual. Instead, it defaulted to the first number, requiring manual selection. This now defaults correctly based on the individual's assigned number.

  • Event: Fixed an issue in Registration Entry where the registrant's email address was updated even when the Email field was marked as locked. The email will now only be updated if the field is unlocked or if the registrant does not have an existing email address.

  • Core: Fixed the Attribute Matrix Template Detail block so it no longer shows the security button on the per-item attributes. These were never intended to be secured.

  • Core: Fixed the View Notifications page not remembering filter options when reloading the page. The filtering settings will now be saved to person preferences so that they are re-used the next time the page is loaded.

  • CMS: Fixed an issue where the Group Registration block did not save the selected Phone Country Code to the individual’s profile and instead saved the default value.

  • Core: Fixed an issue where deleting a Binary File could time out on large databases. Improved the underlying lookup performance so deletions complete reliably.

  • Communication: Improved how email addresses are updated in the Public Profile Edit Block so the email is marked Active when edited or when the email preference is changed.

  • Core: Improved the friendly schedule text display for single-date schedules to use a more friendly format (e.g., "Once on March 29, 2026 at 11:00 AM" instead of "Once at 3/29/2026 11:00 AM").

  • Communication: Fixed an issue that could prevent a Communication from sending when the Communication List included archived individuals or duplicate list entries, which caused the send process to fail with an error.

  • Group: Fixed an issue where individuals without Rock Admin rights could not see or use the configured Attribute filters in the Obsidian Group Placement Block, even when they had block access.

  • Core: Improved handling of file dates when installing plugins or updating Rock. File dates are now set to the current date and time when installed rather than when they were originally created.

  • Core: Fixed an issue in the Obsidian Location Detail block that allowed a Location to be saved with itself (or a child Location) as its parent. This caused the Location tree to fail when loading nested Locations.

  • Group: Fixed an issue that allowed individuals to register for archived groups by navigating directly to a bookmarked or previously shared Group Details or Group Registration page. The Group Registration Block now verifies that the group is Active and not Archived when the page loads and again when the registration is submitted, displaying a warning and hiding the form if registration is no longer allowed.

  • Group: Fixed an issue where the Obsidian Group Attendance Detail Block did not function correctly when Predictive Ids were disabled. The block now correctly resolves the selected group using either the Group Guid or IdKey and prevents an unintended group from loading when Disable Predictive Ids is checked in Site settings.

  • Group: Fixed an issue where taking attendance using the Group Attendance Detail Block could display people out of alphabetical order if a last name began with a lowercase letter. Names are now grouped and sorted correctly regardless of letter casing.

  • Group: Fixed an issue where the Obsidian Group Scheduler did not consistently disable the Group Picker when the “Disallow Group Selection If Specified” block setting was enabled. When more than one Group was passed into the page link, the setting was ignored, allowing the individual to change the preselected Groups. The Group Picker is now disabled whenever one or more Groups are passed in the link.

  • Communication: Fixed an issue in the Communication Entry Wizard where Rock Entity Lava 'where' clauses containing logical operators (such as &&) were HTML encoded when loading a template, causing preview and send errors. Logical operators now remain unchanged so Lava executes correctly.

  • Communication: Fixed an issue in the New Communication Wizard where emails containing the PersonTokenCreate Lava filter displayed a Lava error message in the Preview step. The communication itself was valid, but the preview did not render correctly until navigating back and forward. It now renders correctly on first load.

  • Check-in: Fixed the Check-In Type Detail Block "Scheduled Times" list to exclude schedules from Archived or Inactive Groups that still have a GroupLocationSchedule assigned. Previously, schedules from these Groups could appear in the list, resulting in unexpected entries. This update ensures only schedules from active, non-archived Groups are displayed.

  • Group: Fixed the Send Attendance Reminder job so Group leaders still receive reminders when a Group only has scheduling/RSVP-related Attendance records. The job now treats those tracking records as not being “attendance” and only suppresses reminders when at least one individual attended or the Group was marked as did not meet.

  • Event: Fixed an issue in the Event Registration block where inactive fees that were still marked as Required were evaluated during checkout. This caused the registration to be blocked, even though the inactive fees were not displayed on the registration form. Checkout logic now only evaluates fees that are both Active and Required.

  • Group: Fixed an issue where duplicate Group Member records with the same role caused the RockCleanup Job to fail when processing group memberships. Updated the cleanup process to correctly handle related GroupMemberAssignment records so duplicate members can be removed without triggering database errors.

  • Reporting: Fixed an issue in Attendance Analytics where charts displayed incorrect counts when multiple groups shared the same name, causing the chart to use data from the first matching group instead of each group's actual totals.

  • Core: Fixed an issue where browser autofill populated the City value into the County field when entering an address. Updated the address field mapping to ensure the City is correctly autofilled into the City input instead of County.

  • Core: Fixed a rare issue where multiple individuals’ Interactions could be linked to the same InteractionSession when the RockSessionId was unavailable (such as in certain load-balanced environments, after a server reset, or when session cookies were not present).

  • Event: Updated the Registration Entry block to no longer log an exception when a Registration Template Form has no fields at the time of registration submission, as this was causing false positives to be logged.

  • Core: Fixed an issue in the Defined Value picker component where Single-Select Defined Value attributes configured with "Enhanced for Long Lists" did not display the searchable enhanced experience in Obsidian blocks (e.g., Workflow Entry and Event Registration), requiring manual scrolling through values.

  • Engagement: Fixed an issue introduced in Rock v18.0 where the AchievementTypeDetail block would save newly created Achievement Types without important settings. This fix includes a post-update job to automatically repair Achievement Types created with incomplete configuration due to this block bug.

  • Engagement: Fixed a timing issue that could prevent Achievement Type configured workflows from running when many AchievementAttempts were recorded in rapid succession by ensuring each attempt is fully saved before its workflows are triggered.

  • Mobile: Fixed an issue in the Connection Request List block where sorting by date did not consistently reflect the correct request order.

  • Mobile: Fixed an issue in the Connection Request Detail Edit view where Activity Status values were not displayed in the configured order.

  • Mobile: Fixed an issue where the activity list in the Connection Request Detail displayed a person's First Name instead of their Nickname.

  • Mobile: Fixed an issue in the Connection Request Detail block Edit view where the status displayed as "Connected" even when the Show Connect Button setting was disabled on the Connection Opportunity.

  • Mobile: Fixed an issue where individuals could not edit their saved Financial Account details because the block restricted editing to Rock Administrators instead of the account owner.

  • Event: Fixed UI issue when editing an Event Registration Template that caused new Group Member Attribute fields to appear as if they would be shown on the wait list when in fact they will not.

  • Finance: Improved the ScheduledTransactionEditV2 Block to more accurately determine when Campus Account mapping logic should be applied and to build a correct list of selectable Financial Accounts. The block now evaluates all accounts in the transaction and properly handles mixed scenarios involving campus-child-accounts and standard accounts. This prevents valid accounts from being unintentionally excluded and ensures a child account is hidden when its parent account is selected in the block settings and Use Account Campus Mapping is enabled.

  • Workflow: Fixed an issue where Workflow Types (including Form Builder forms) did not inherit security settings from their Category. Individuals with Edit access to a Category can now clone and delete workflows within that folder in Form Builder. Read the Tech Bulletin item for more details.

  • Communication: Fixed an issue in the Communication Wizard when using the Twilio transport where non-breaking spaces (such as double or trailing spaces) were replaced with single quotes in the SMS preview and sent message. Updated how special characters are handled to preserve intended spacing and prevent unintended substitutions while still converting stylistic characters appropriately.

  • Core: Fixed steps authorization in Bulk Update to correctly inherit permissions from the parent Step Program when no explicit permissions are set on the Step Type.

  • Connection: Fixed an issue that caused slow performance and timeouts when multiple Connection Requests were created at the same time. The update reduces database blocking and improves stability under heavier load.

  • Connection: Fixed an issue on the Connection Board where values for Check List field type attributes were not displaying correctly in the detail pop-up. They now properly show a checked icon instead of appearing unselected.

  • Check-in: Fixed an issue that could cause searches by name to timeout if people searched for short names, such as "te de".

  • Engagement: Fixed an issue where assignments submitted before the due date were incorrectly marked as late if graded after the due date. Completion status now reflects the actual submission time rather than the grading time.

  • Engagement: Fixed an issue where the validation banner in the Connection Request dialog could persist from a previously viewed individual when opening another request. The banner now hides until edit mode is enabled and refreshes so the validation message reflects the currently edited individual.

  • Core: Fixed an issue in Obsidian blocks where Memo Fields configured to allow HTML displayed the HTML tags as encoded text instead of rendering the formatted content within the block.

  • Group: Fixed an issue in the Group Scheduler where the Mix/Max/Desired values tooltip was not styled correctly, making the tooltip text difficult to read.

  • Core: Fixed an issue where the "# Replies” link would disappear after editing and saving a note. The reply count link now refreshes correctly after saving so replies remain accessible without requiring a page reload.

  • Finance: Fixed an issue in the Saved Account List block where individuals could not delete saved payment methods unless they had Edit security on the block. Now the saved account owner or an admin can delete.

  • Core: Fixed an issue in the Attribute Editor where Attributes could not be saved if HTML was entered in the "Pre-HTML" or "Post-HTML" fields because those fields were incorrectly validating HTML as invalid characters.

  • Core: Fixed an issue in the Note Type Detail block where the "Enabled Approvals" checkbox was still displayed even though manual Note approvals are no longer supported. This update replaces that setting with the "Enable AI Approvals" checkbox, which allows notes to be reviewed automatically using AI moderation.

  • CMS: Fixed an issue in the RockNextGen theme where long Page Description text could overflow the page header. Page descriptions no longer render in the header area, keeping the Rock internal UI clean and consistent.

  • Event: Fixed an issue in the Registration Template Confirmation Email that caused a Lava error when using the PersonTokenCreate filter. This update ensures the Lava template can access the information it needs when the email is generated.

  • Core: Fixed an issue where Obsidian Grid light mode disabled pagination but still limited the grid to 50 rows, preventing additional attributes from being viewed or edited.

  • Check-in: Fixed an issue that could cause incorrect counts during over-capacity checks when doing Family Check-In that has been configured for fully automatic group and location selection if multiple services were used on the same day.

  • Core: Fixed an issue in the Obsidian Date Parts Picker where the Future Years setting was ignored when set to 0, causing the picker to always allow up to 50 future years by default. Updated the logic to respect a value of 0 so the current year is the maximum selectable year. Also updated to allow negative Future Years values so existing configurations continue to work as expected when using this setting.

  • Event: Fixed an issue where the "Selectable Campuses" configuration for a Campus field type was not being restored when reopening the field editor. The SetConfigurationValues method was reading from the control's empty current state instead of from the stored configuration values.

  • Finance: Fixed a rounding issue in the Transaction Entry (V2) block when Cover the Fee is enabled and a gift has multiple fund allocations. Fee amounts now always sum correctly, preventing small discrepancies during payment processing.

  • Engagement: Added a Smart Scroll setting to the Public Learning Class Workspace block that automatically scrolls the selected Activity content into view. This setting is enabled by default but can be disabled in block settings.

  • Group: Fixed an issue seen in the Group Attendance List block where occurrences on the selected end date did not appear when using the Date Range filter.

  • Finance: Fixed two issues in the Giving History API. When "Combine Giving With" was blank, the API incorrectly returned family giving data instead of only the individual's authorized giving. When family giving (includeGivingGroup parameter) was excluded, contributions from the individual's other records were missing from results.

  • Event: Fixed an issue with internal Event Registration blocks (Registration Instance - Registration List, Registration Details, and Registrant Details) where a Signature Document could be incorrectly shown for a registrant without a valid SignatureDocumentId, due to documents being matched by person instead of the registrant's record. Updated these blocks to use the registrant's SignatureDocument relationship for accuracy. Added a data migration to backfill missing SignatureDocumentId values when a matching (and still valid) signature document exists for the same person and required template (excluding legacy templates).

  • Core: Fixed an issue where Attribute Matrix Items could intermittently fail to save on systems with large amounts of data. The underlying database query has been optimized to prevent timeouts during save.

  • Workflow: Fixed an issue with the Person Entry form action where Marital Status defaulted to "Married" when no value was provided and "Autofill Current Person" was disabled. This caused new records to be incorrectly set to Married and could overwrite existing records during matching. Marital Status is now left blank when not provided, and existing records are no longer updated unless a value is explicitly set.

  • Group: Fixed Group Placement so inactive Registrant Attributes no longer appear in Display Source Attributes, and added scrolling to the Group Placement filter areas so filter controls remain accessible when many Attributes are shown.

  • Engagement: Fixed an issue where editing a Step Program removed the Step Type association from its workflow triggers, and also addressed Step Type-level triggers being incorrectly displayed on the Step Program Detail.

  • Communication: Fixed the Send Communications job to reference the correct Obsidian communication page when sending email metrics reminder emails.

  • Event: Fixed an issue in the Event Registration block where auto-applied discounts could override a manual discount that had been added to a registration.

  • Core: Fixed an issue that could cause the Rock Transaction Queue to stop processing after certain errors. The queue now continues running correctly after an error occurs.

  • CMS: Fixed an issue where some REST v2 API endpoints incorrectly failed security checks when using ExecuteWrite permissions.

  • CMS: Fixed an issue with the Zone Blocks modal that allowed you to delete a system block when editing the blocks for a page's zone.

  • Event: Fixed an issue that could allow an individual to complete an Event Registration without filling in all the required fields.

  • Mobile: Added a Campus Type filter to the campus picker on the Prayer Request Detail block. This allows individuals to narrow the list of selectable campuses when adding a new prayer request.

  • Core: Improved the Process Group History job with a new Command Timeout setting (default: 300 seconds) to prevent SQL timeouts when processing large volumes of group history data.

  • Event: Updated the Obsidian Registration Entry block to respect the "Enable Missing Field Diagnostics" block setting when determining whether to log an exception for missing Registration Template Form Fields. This logging has been removed altogether from the deprecated Legacy version of the block, as this could sometimes cause false positives to be logged.

  • Event: Fixed an issue in the Registration Instance Discount List block where the discount was applied to every registrant in the report even when the discount's Maximum Registrants setting limited it to fewer.

  • Event: Fixed a discount rounding inconsistency in the WebForms Registration Entry block where percentage discounts on registrations with fractional-penny math could produce totals that didn't align with the discounted cost shown in confirmation emails and admin views.

  • Event: Fixed an issue in the Obsidian Registration Entry block where percentage discounts producing fractional-penny totals could block submission because the default "Amount To Pay Today" value exceeded its own validation limit.