Error
While we make a huge effort to not break things during updates, when something can't be avoided we will document it here.
Rock.Model.CommunicationRecipient.PersonAliasId
Rock.Model.SchedulerResource.HasSchedulingConflict
Rock.Model.SchedulerResource.SchedulingConflicts
List<SchedulerResourceScheduled>
Rock.Reporting.DataFilter.Workflow.WorkflowAttributesFilter.workflowTypePicker_SelectItem
Rock.Reporting.DataFilter.Workflow.WorkflowAttributesFilter.workflowTypePicker_ValueChanged
The GroupDetail block has new setting called "Add Administrate Security to Group Creator". When this is set to "Yes" then whoever created the group will automatically have the security permission to administrate the group added. The default value for this setting is "No". The behavior of Rock prior to v12.1 was to automatically grant the Group creator "Administrate" permission. As of v12.1 this will not happen unless the "Add Administrate Security to Group Creator" block setting is set to "Yes". This release does NOT change the security permissions for any existing Groups.
If you would like to run a script to remove the existing "Administrate" group permissions granted to the group creater we have some handy SQL scripts!
This script will show all of the Group/Persons where the Person is assigned "Administrate" permission and that same Person created the Group. It will NOT include permissions other than "Administrate", permissions assigned to a role, Disallow permissions, or permissions assigned to a Person that didn't create the group. The permissions returned by this script are the permissions that the delete script will remove.
DECLARE @selectGroupEntityId int = (SELECT [Id] FROM [EntityType] WHERE [Guid] = '9BBFDA11-0D22-40D5-902F-60ADFBC88987') SELECT g.[Name] AS GroupName, p.[LastName] AS PersonLastName, p.[FirstName] AS PersonFirstName, a.* FROM [Auth] a JOIN [Group] g on a.[EntityId] = g.[Id] JOIN [PersonAlias] pa on a.[PersonAliasId] = pa.[Id] JOIN [Person] p on pa.[PersonId] = p.[Id] WHERE [EntityTypeId] = @selectGroupEntityId AND a.[Action] = 'Administrate' AND a.[AllowOrDeny] = 'A' AND g.[CreatedByPersonAliasId] = a.PersonAliasId ORDER BY g.[Name], p.[LastName], p.[FirstName]
Here is the DELETE script. It will remove all of the Group/Person security settings where the Person is assigned "Administrate" permission and that same Person created the Group. It will NOT delete permissions other than "Administrate", permissions assigned to a role, Disallow permissions, or permissions assigned to a Person that didn't create the group.
After running this script Group administration security access will be dependent on Roles and the Users explicitly assigned "Administrate" permission after creating the Group.
DECLARE @groupEntityId int = (SELECT [Id] FROM [EntityType] WHERE [Guid] = '9BBFDA11-0D22-40D5-902F-60ADFBC88987') DELETE FROM [Auth] WHERE [Id] IN ( SELECT a.[Id] FROM [Auth] a JOIN [Group] g on a.[EntityId] = g.[Id] WHERE [EntityTypeId] = @groupEntityId AND a.[Action] = 'Administrate' AND a.[AllowOrDeny] = 'A' AND g.[CreatedByPersonAliasId] = a.[PersonAliasId])
NOTE: After running the delete script, you will need to clear the cache for the changes to effect the Rock web application.
ScheduleICalHelper
InetCalendarHelper
DDay.iCal.Event
IList<DDay.iCal.Occurrence>
GetCalendarEvent()
GetICalEvent()
GetOccurrences(...)
GetICalOccurrences(...)
WorkflowLogService
WorkflowLog
COPY "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.IO.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2" COPY "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.Linq.Expressions.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2" COPY "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.ComponentModel.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2" COPY "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.Threading.Tasks.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2" COPY "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades\System.Collections.Concurrent.dll" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2"
script
Sys.Application.add_load
web.config
[RockObsolete("1.7")]
SystemEmail
ChannelId
InteractionChannelId
RelatedDataViewFilterBase
IRelatedChildDataView
PushNotification
SystemCommunication
Rock.SystemGuid.Block
// From this: [RouteAttribute("api/FinancialScheduledTransactions/WithPreviousTransaction")] public HttpResponseMessage GetWithPreviousTransaction(int pageSize, int pageNumber) // To this: [RouteAttribute("api/FinancialScheduledTransactions/WithPreviousTransaction")] public virtual HttpResponseMessage GetWithPreviousTransaction(int skip, int top) // From this: [RouteAttribute("api/FinancialScheduledTransactions/Process/{scheduledTransactionId}")] public HttpResponseMessage ProcessPayment(int scheduledTransactionId, bool ignoreRepeatChargeProtection = False, bool ignoreScheduleAdherenceProtection = False) // To this: [RouteAttribute("api/FinancialScheduledTransactions/Process/{scheduledTransactionId}")] public virtual HttpResponseMessage ProcessPayment(int scheduledTransactionId, bool enableDuplicateChecking = True, bool enableScheduleAdherenceProtection = True) // From this: [RouteAttribute("api/FinancialTransactions/Process")] public HttpResponseMessage ProcessPayment(AutomatedPaymentArgs automatedPaymentArgs, bool ignoreRepeatChargeProtection = False, bool ignoreScheduleAdherenceProtection = False) // To this: [RouteAttribute("api/FinancialTransactions/Process")] public virtual HttpResponseMessage ProcessPayment(AutomatedPaymentArgs automatedPaymentArgs, bool enableDuplicateChecking = True, bool enableScheduleAdherenceProtection = True) // From this: [RouteAttribute("api/Groups/GetChildren/{id}")] public IQueryable GetChildren(int id, int rootGroupId = 0, bool limitToSecurityRoleGroups = False, string includedGroupTypeIds = "", string excludedGroupTypeIds = "", bool includeInactiveGroups = False, GetCountsType countsType = 0, int campusId = 0, bool includeNoCampus = False, bool limitToPublic = False) // To this: [RouteAttribute("api/Groups/GetChildren/{id}")] public IQueryable GetChildren(int id, int rootGroupId = 0, bool limitToSecurityRoleGroups = False, string includedGroupTypeIds = "", string excludedGroupTypeIds = "", bool includeInactiveGroups = False, GetCountsType countsType = 0, int campusId = 0, bool includeNoCampus = False, bool limitToPublic = False, bool limitToSchedulingEnabled = False)
We've updated the way the 'unsubscribe' functionality works. Be sure to look at the generic Unsubscribe HTML in the Email medium (under Admin Tools > Communications > Communication Mediums) and make similar changes to any custom templates you have (replacing Unsubscribe/{{ Person.UrlEncodedKey }} with Unsubscribe/{{ Person | PersonActionIdentifier:'Unsubscribe' }}). You will also need to update the Non-HTML Content for the Email Communication Medium (Located in Communications > Communication Mediums; replacing &p={{ Person.UrlEncodedKey }} with &p={{ Person | PersonActionIdentifier:'Unsubscribe' }} )
Unsubscribe/{{ Person.UrlEncodedKey }}
Unsubscribe/{{ Person | PersonActionIdentifier:'Unsubscribe' }}
&p={{ Person.UrlEncodedKey }}
&p={{ Person | PersonActionIdentifier:'Unsubscribe' }}
SELECT ... FROM [Attendance] AS a INNER JOIN [Group] g ON a.GroupId = g.Id
SELECT ... FROM [Attendance] AS a INNER JOIN [AttendanceOccurrence] o ON o.Id = a.OccurrenceId INNER JOIN [Group] g ON a.GroupId = g.Id
{% attendance where:'GroupId == "24"' %}
{% attendance.GroupId %}
{% attendanceoccurrence where:'GroupId == "24"' %}
{% attendanceoccurrence.GroupId %}
Below is a list of all the code changes made in Rock 8.0 that may potentially affect custom code and/or plugins.
Rock.Web.UI.Cache.*
Rock.Model.Attendance.Group
Rock.Model.Attendance.IsValid
Rock.Model.Attendance.Location
Rock.Model.Attendance.Schedule
Rock.Model.Attendance.SundayDate
Rock.Model.HistoryItem.Changes
Rock.SystemGuid.DefinedType.PROTECT_MY_MINISTRY_PACKAGES
Rock.SystemGuid.DefinedType.BACKGROUND_CHECK_TYPES
The following properties were removed from the Rock.Model.Group class:
Rock.Model.Group
These properties were all moved to a new Rock.Model.GroupSync class to support role-specific group syncing.
Rock.Model.GroupSync
If you are using the SendGrid Email Transport update the plugin from the RockShop immediately after upgrading to Rock v7.
Page view and email activity data has been moved in Rock v7. While we make a huge effort to not break things during updates the transition of this data to new tables may break custom SQL or code that was querying this data from the PageView and/or CommunicationRecipientActivity tables. All of the data has been transitioned to their new home in the Interactions tables so you won't miss a thing. This should impact only a very small number of organizations who have written custom code or SQL against these few tables. Note that since there could be a large amount of data to convert from the old PageView and CommunicationRecipientActivity tables, a Rock Job called 'Move Data from PageViews and Communication Activity to the new Interaction Tables' will run at 4am after v7 is installed. This job could take an hour or so depending on how much data there is.
The external giving blocks have a new 'Give as Business' option which defaults to 'on'. If you don't want your giving blocks to have the 'Give as Business' option, you'll have to change that manually.
There is a new 'Expiring Credit Card Notices' job which is enabled to run at 7:30 AM on the 1st of every month. It can be disabled manually if needed.
The ZebraPhoto lava command was changed to use the R: (DRAM) location due to long term problems with repetitive writing to the E: (Flash) location. Any labels using ZebraPhoto must also change their Recall Graphic (^XG) command to use the R: location too. http://www.rockrms.com/lava/person#zebraphoto
There is a new 'Database Maintenance' job that is enabled to run at 2:30 AM every day by default. If you SQL database already has a maintenance plan, update the 'Database Maintenance' job and/or your SQL Maintenance Plan to do what you want.
Make sure to enable the Google Static Maps API in your Google API Manager dashboard.
A change was made in how group requirement notifications are sent out. Before it would send to all Roles marked 'IsLeader' of the group, with the ability to provide a list of Role Ids to exclude. This has been changed to use the 'Receive Requirements Notifications' property on the Role. If you have setup jobs to send group requirement emails you will want to ensure that you configure the roles you want to receive these emails to have the 'Receive Requirements Notifications' checked.
Staff and Staff-Like roles will be given Edit access to the following group types if those group types do not already have specific 'Edit' roles defined. This is so that staff can add new groups of those types.
ContentChannelView has been updated to not support legacy Lava syntax for accessing global attributes. To enable this, a new "Enable Legacy Global Attribute Lava" block setting needs to be set to true (which negatively affect performance of this block).
Group Attributes now enforce security. Edit each Group Type in General Settings > Group Types, and make sure to set the security on each of the Group Attributes so they can be edited by the appropriate team.
iScroll.js is now included in the RockLibs.js bundle. If you have a custom blocks (i.e. check-in) that is loading iScroll.js, this is no longer needed.
This release fixes a bug where workflow activities marked as inactive were still being processed. If you have any activities where 'Is Active' is not checked they will no longer run even if you use the 'Activate Workflow Activity' action. This action activates an instance of an activity. The activity type however, must be active for this to occur.
Below is a list of all the code changes made in Rock v7 that may potentially affect custom code and/or plugins.
People without birth date will no longer be able to check-in to groups that have an age range requirement. This behavior can be changed by editing the 'Unattended Check-in' workflow, selecting the 'Person Search' activity, then the 'Filter Groups By Age' action, and un-checking the new 'Age Required' option.
Only members of the 'RSR - Data Integrity Worker' will be able to complete person merges. Everyone else will only be able to request merges (new functionality). This can be modified by adding other security roles to have edit access to the merge block.
Security was adjusted on the Website Ads and Bulletin Content Channels to give the 'RSR - Staff Worker' and 'RSR - Staff Like Worker' View/Edit rights.
public method Rock.CheckIn.CheckinManagerHelper.SetSelectedCheckinAreaGuidToCookie(Nullable checkinAreaGuid) has been renamed to Rock.CheckIn.CheckinManagerHelper.SaveSelectedCheckinAreaGuidToCookie(Nullable checkinAreaGuid)
Rock.CheckIn.CheckinManagerHelper.SetSelectedCheckinAreaGuidToCookie(Nullable checkinAreaGuid)
Rock.CheckIn.CheckinManagerHelper.SaveSelectedCheckinAreaGuidToCookie(Nullable checkinAreaGuid)
Removed v1.8 obsolete public method List Rock.Model.PersonService.InactivatePerson(Person person, DefinedValueCache reason, string reasonNote). The replacement method void Rock.Model.PersonService.InactivatePerson( Person person, DefinedValueCache inactiveReasonDefinedValue, string inactiveReasonNote ) returns void since history changes are handled by the Person model.
List Rock.Model.PersonService.InactivatePerson(Person person, DefinedValueCache reason, string reasonNote)
void Rock.Model.PersonService.InactivatePerson( Person person, DefinedValueCache inactiveReasonDefinedValue, string inactiveReasonNote )
Made the property Rock.Model.CommunicationRecipient.PersonAliasId nullable.
Removed setter from property Rock.Model.SchedulerResource.HasSchedulingConflict. The property's value is now determined by checking the new property Rock.Model.SchedulerResource.SchedulingConflicts for any items. This new property is a List and holds any scheduling conflicts.
Removed method Rock.Reporting.DataFilter.Workflow.WorkflowAttributesFilter.workflowTypePicker_SelectItem. Selection functionality will be performed during the ValueChanged event using Rock.Reporting.DataFilter.Workflow.WorkflowAttributesFilter.workflowTypePicker_ValueChanged instead of the SelectItem event.
The regular release notes detail changes that are important to admins and users. There is also a pre-alpha release notes which covers stuff in the latest pre-alpha-release branch.