--- /dev/null
+use strict;
+use warnings;
+
+our @Initial = (sub {
+ my $searches = RT::Attributes->new(RT->SystemUser);
+ $searches->Limit( FIELD => 'Name', VALUE => 'SavedSearch' );
+ $searches->OrderBy( FIELD => 'id' );
+
+ while (my $search = $searches->Next) {
+ my $content = $search->Content;
+ next unless ref $content eq 'HASH';
+ next unless ($content->{SearchType} || '') eq 'Chart';
+
+ # Switch from PrimaryGroupBy to GroupBy name
+ # Switch from "CreatedMonthly" to "Created.Monthly"
+ $content->{GroupBy} ||= [delete $content->{PrimaryGroupBy}];
+ for (@{$content->{GroupBy}}) {
+ next if !defined || /\./;
+ s/(?<=[a-z])(?=[A-Z])/./;
+ }
+
+ my ($ok, $msg) = $search->SetContent($content);
+ RT->Logger->error("Unable to upgrade saved chart #@{[$search->id]}: $msg")
+ unless $ok;
+ }
+});