-- This SQL updates user fields from one username to another. It replaces all fields that had
-- usernames in my 3.5.3 data set. This may not be all possible fields, so USE AT YOUR OWN RISK,
-- and certainly make a backup before running.
--
-- Later versions of JIRA may introduce new fields storing usernames. To find newly introduced
-- user fields, this command is helpful:
--   grep $USERNAME jiradata.xml | grep -v ChangeGroup | grep -v Action | grep -v Issue | grep -v FileAttachment | grep -v FilterSubscr | grep -v NotificationInstance | grep -v SearchRequest | grep -v SchemePermissions.*user.*$USERNAME | grep -v OSMembership.*userName.$USERNAME | grep -v HistoryStep | grep -v OSPropertyString | grep -v OSMember | grep -v \<Project | grep -v OSUser | grep -v OSCurrentSt | grep -v ChangeItem | grep -v CustomFieldValue | grep -v PortalPage
--


update jiraissue x inner join usermigration u on
x.reporter = u.oldusername
set x.reporter = u.newusername;

update jiraissue x inner join usermigration u on
x.assignee = u.oldusername
set x.assignee = u.newusername;

update jiraaction x inner join usermigration u on
x.AUTHOR = u.oldusername
set x.AUTHOR = u.newusername;

update changegroup x inner join usermigration u on
x.AUTHOR = u.oldusername
set x.AUTHOR = u.newusername;

update changeitem x inner join usermigration u on
x.OLDVALUE = u.oldusername
set x.OLDVALUE = u.newusername
where x.field='assignee';

update changeitem x inner join usermigration u on
x.NEWVALUE = u.oldusername
set x.NEWVALUE = u.newusername
where x.field='assignee';

update searchrequest x inner join usermigration u on
x.authorname = u.oldusername
set x.authorname = u.newusername;

update searchrequest x inner join usermigration u on
x.username = u.oldusername
set x.username = u.newusername;

update schemepermissions x inner join usermigration u on
x.perm_parameter = u.oldusername
set x.perm_parameter = u.newusername
where x.perm_type='user';

update searchrequest x inner join usermigration u on
x.authorname = u.oldusername
set x.authorname = u.newusername;

update membershipbase x inner join usermigration u on
x.USER_NAME = u.oldusername
set x.USER_NAME = u.newusername;

update OS_CURRENTSTEP x inner join usermigration u on
x.owner = u.oldusername
set x.owner = u.newusername;

update OS_CURRENTSTEP x inner join usermigration u on
x.caller = u.oldusername
set x.caller = u.newusername;

update OS_HISTORYSTEP x inner join usermigration u on
x.owner = u.oldusername
set x.owner = u.newusername;

update OS_HISTORYSTEP x inner join usermigration u on
x.caller = u.oldusername
set x.caller = u.newusername;

update fileattachment x inner join usermigration u on
x.author = u.oldusername
set x.author = u.newusername;

update filtersubscription x inner join usermigration u on
x.username = u.oldusername
set x.username = u.newusername;

update project x inner join usermigration u on
x.lead = u.oldusername
set x.lead = u.newusername;

update userbase x inner join usermigration u on
x.username = u.oldusername
set x.username = u.newusername;

update customfieldvalue x inner join usermigration u on
x.stringvalue = u.oldusername
set x.stringvalue = u.newusername;

update columnlayout x inner join usermigration u on
x.username = u.oldusername
set x.username = u.newusername;

update portalpage x inner join usermigration u on
x.username = u.oldusername
set x.username = u.newusername;

update component x inner join usermigration u on
x.LEAD = u.oldusername
set x.LEAD = u.newusername;

update jiraworkflows x inner join usermigration u on
x.creatorname = u.oldusername
set x.creatorname = u.newusername;

update userassociation x inner join usermigration u on
x.SOURCE_NAME = u.oldusername
set x.SOURCE_NAME = u.newusername;