\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
Sometimes there is a requirement to rename users in the Horde DB. eg: you move from a system with 'standard' users to one where virtual hosting is used. In such a situation the old user may be 'fred' and the new user may be 'fred@hisdomain.com'

The script below seems to work for the following apps:

\begin{itemize}
\item{Address Book (turba)}
\item{Calendar (kronolith)}
\item{File Manager (gollem)}
\item{Filters (ingo)}
\item{Horde (horde)}
\item{Mail (imp)}
\item{News (jonah)}
\item{Notes (mnemo)}
\item{Password (passwd)}
\item{Tasks (nag)}
\item{Tickets (whups)}
\item{Time Tracking (hermes)}
\end{itemize}
YMMV and more apps will need more changes of course.

\textbf{BACKUP YOUR DB BEFORE RUNNING ANYTHING LIKE THIS!}

\begin{verbatim}

#!/bin/sh

function horde_rename() {
  new=$2; old=$1
  echo "Rename $old -> $new"

  mysql -u horde -ppassword horde << EOF
update hermes_timeslices set employee_id = '$new' where employee_id = '$old';
update horde_datatree set user_uid = '$new' where user_uid = '$old';
update horde_datatree set datatree_name = '$new' where datatree_name = '$old' and user_uid = '$new';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_key = 'who';
update horde_datatree_attributes set attribute_key= '$new' where attribute_key = '$old' and attribute_name = 'perm_users';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_name = 'uid';
update horde_datatree_attributes set attribute_value = '$new' where attribute_value = '$old' and attribute_name = 'owner';
update horde_histories set history_who = '$new' where history_who = '$old';
update horde_prefs set pref_uid = '$new' where pref_uid = '$old';
update kronolith_events set event_creator_id = '$new' where event_creator_id = '$old';
update kronolith_events set calendar_id = '$new' where calendar_id = '$old';
update mnemo_memos set memo_owner = '$new' where memo_owner = '$old';
update nag_tasks set task_owner = '$new' where task_owner = '$old';
update turba_objects set owner_id = '$new' where owner_id = '$old';
update whups_tickets set user_id_requester = '$new' where user_id_requester = '$old';
update whups_queues_users set user_uid = '$new' where user_uid = '$old';
update whups_users_searches set user_uid = '$new' where user_uid = '$old';
EOF
  echo "Done with $new"
}

horde_rename 'fred' 'fred@hisdomain.com'
\end{verbatim}

I did notice that notepads, tasks lists, calendars, etc. become 'hidden' after doing this. No data appears to be lost and users simply have to re-select the ones they want to see though.

\end{document}
