Eine Mitarbeiterin hat geheiratet und Ihren Nachname, der im LoginName auftaucht geändert. Gibt es eine Möglichkeit den LoginName zu ändern?
Hallo Herr Bucher,
wir können Ihnen empfehlen den Benutzer zu duplizieren. Die Rechte und Gruppenzuordnungen werden mit dieser Funktion übernommen.
Es ist im combit CRM System später dann besser nachvollziehbar.
Danach würde ich das Konto des veralteten Login Users deaktivieren.
Viele Grüße aus dem Saarland.
Je nachdem „wo“ überall der Benutzername in der Solution in Ihren internen Prozessen benutzt wird, gibt es mehrere Stellen, die da anzufassen wären. Da combit CRM das out-of-the-box nicht alles 100% wissen kann, haben wir uns dagegen entschieden, direkt in der Benutzerverwaltung ein bequemes Umbenennen anzubieten.
Die Idee mit dem Umkopieren der Benutzers fand ich auf den ersten Blick ganz gut.*
Allerdings sollten man der Benutzerin zu Liebe noch ihre Konfiguration dann unter dem neuen Namen verfügbar machen:
Umbenennen der Pfade von Konfigurationseinstellungen im Feld „PATH“ von combit_cRM_System.cmbt_Files
UPDATE "combit_cRM_System"."cmbt_Files" set "PATH"=REPLACE("PATH", 'alter Name\', 'neuer Name\') where "PATH" like 'alter Name\%'
UPDATE "combit_cRM_System"."cmbt_Files" set "PATH"=REPLACE("PATH", 'alter Name.', 'neuer Name.') where "PATH" like 'alter Name.%'
Der Punkt bzgl. Backslash ist wichtig, falls der zu wechselnde Benutzername gleich anfängt wie ein ganz anderer („LFrisch“ und " LFrischmann")
Jetzt zum kniffeligen Part:
- Was ist mit den „Erfasst-Von“- und „Geändert-Von“-Feldern. Dürfen/Sollen die (bestehenden) Inhalte so bleiben? (Es gibt für beides Pro und Contra.)
- Was ist mit etwaigen „Betreuer“-, „Verantwortlich“-, „Zugewiesen-An“-, „Genehmigt-Durch“-Feldern, wodurch sich Filter/Berichte/TODO-Listen, Dokumentationen, Workflows für die Nutzerin ergeben?
- ihre Termine bzw. Terminteilnahmen
- Gibt es Stellen in Scripten und/oder Filter und/oder Formeln, die explizit „fest verdrahtet“ auf den (bisherigen) Login-Namen abzielen? (eher selten, ich will es aber erwähnt haben)
- Gibt es Berechtigungen für Filterausdrücke, Sofortberichte und Aktionen in der Projektdatei (.crm) für diesen User*?
Weiter unten eine Abfrage für SQL Server, die Ihnen in Ihrer Solution alle Tabellen mit den Spalten auflistet, in denen der Suchtext (hier „LFrisch“) auftaucht. (Danke ChatGPT! )
Bei den Tabellenspalten, in denen eine Änderung gewünscht ist, könnten Sie dann ein simples
UPDATE "Tabelle" set "Spalte"='neuer Name' where "Spalte"='alter Name'
machen.
Bei Notizfeldern mit Fließtext:
UPDATE "Tabelle" set "Spalte"= REPLACE("Spalte", 'alter Name', 'neuer Name') where "PATH" like '%alter Name%'
Aber Obacht, falls der Username auch ein normales Wort sein kann, oder falls der zu wechselnde Benutzername gleich anfängt wie ein ganz anderer („LFrisch“ und " LFrischmann").
Unbedingt vorher ein BACKUP der beiden Datenbanken combit_cRM_System und Ihrer Solution-Datenbank machen!
USE combit_Large6; -- Solution-Datenbankname
DECLARE @SearchText NVARCHAR(MAX) = 'LFrisch'; --Suchtext
-- Variablen
DECLARE @SQL NVARCHAR(MAX) = '';
DECLARE @TableSchema NVARCHAR(MAX);
DECLARE @TableName NVARCHAR(MAX);
DECLARE @ColumnName NVARCHAR(MAX);
-- Temporäre Tabelle für die Ergebnisse erstellen
CREATE TABLE #Ergebnisse (
Tabelle NVARCHAR(MAX),
Spalte NVARCHAR(MAX)
);
-- Cursor für alle Tabellen und Spalten mit Zeichenfeldern
DECLARE column_cursor CURSOR FOR
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'text', 'ntext');
-- Cursor öffnen
OPEN column_cursor;
-- Tabellen und Spalten durchlaufen
FETCH NEXT FROM column_cursor INTO @TableSchema, @TableName, @ColumnName;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Dynamische SQL für jede Tabelle und Spalte erstellen
SET @SQL = '
IF EXISTS (SELECT 1 FROM [' + @TableSchema + '].[' + @TableName + '] WHERE [' + @ColumnName + '] LIKE ''%' + @SearchText + '%'')
BEGIN
INSERT INTO #Ergebnisse (Tabelle, Spalte)
VALUES (''' + @TableSchema + '.' + @TableName + ''', ''' + @ColumnName + ''');
END';
EXEC sp_executesql @SQL;
FETCH NEXT FROM column_cursor INTO @TableSchema, @TableName, @ColumnName;
END;
-- Cursor schließen und freigeben
CLOSE column_cursor;
DEALLOCATE column_cursor;
-- Ergebnisse zurückgeben
SELECT Tabelle, Spalte FROM #Ergebnisse;
-- Temporäre Tabelle löschen
DROP TABLE #Ergebnisse;
Disclaimer: Alle Angaben ohne Gewähr
- das ist alles nicht final getestet. combit macht keine Angaben zu einer bestimmten Eignung obiger Informationen. Irrtümer und Fehler bleiben ausdrücklich vorbehalten, die Angaben erfolgen ohne Gewähr und enthalten keine Zusicherung. Die Angaben stellen nur Beschreibungen dar und enthalten keine Garantie der Beschaffenheit der Produkte. Die Informationen können z. T. auch ein Versuch sein, Ihnen bei einer Aufgabenstellung zu helfen, selbst wenn das Produkt eigentlich nicht für diesen speziellen Zweck vorgesehen wurde.
*) Ab combit CRM Version 13 würde ich eher ein Umbenennen des Login-Namens auf SQL-Ebene empfehlen, anstatt den User zu kopieren, da wir zumindest bei den Berechtigungen für Filter und Sofortberichte und Aktionen zukünftig mit der Benutzer-ID arbeiten, um genau ein zukünftiges Umbenennen schonmal vorbereitend zu erleichtern. Zumindest bei diesen Elementen gäbe es dann gar nichts weiter zu tun. Bei cRM12 steht bei diesen Berechtigungen noch der User-Login-Namen drin.