3 回答
- 210
SQLでやるとしたら...
- 対象ユーザーのディレクトリIDを確認します。
- CrowdのURLで確認することができます。
- Crowd BASE URL/crowd/console/secure/directory/viewinternal.action?ID=<ディレクトリID> です。
- CrowdのURLで確認することができます。
- cwd_user テーブルでそのユーザレコードを特定します
- SELECT * FROM cwd_user WHERE user_name = '<ユーザ名>' AND directory_id = <ディレクトリID>
- 2のレコードの user_name, lower_user_name を変更します。
- UPDATE SET user_name = ... (割愛)
- cwd_membership テーブルの membership_type が GROUP_USER のレコードを特定します。
- SELECT * FROM cwd_membership WHERE child_name = '<ユーザ名>' AND membership_type = 'GROUP_USER' AND directory_id = <ディレクトリID>
- 4のレコードの lower_child_name、child_name を変更します
- UPDATE SET child_name = ... (割愛)
UPDATE SQLを簡単に実行できる形で残しておくと、手順を信じ切って実行する人もいるかもしれませんので、割愛させて頂きました。必ず意味を理解したうえでご利用ください。
CrowdのDB操作APIである、UserDao API にもそのような記載がありますね...
https://docs.atlassian.com/crowd/latest/com/atlassian/crowd/embedded/spi/UserDao.html#rename(com.atlassian.crowd.model.user.User, java.lang.String)
但しDB操作のため、Crowd、Crowdと連携している各システムはサービス停止した状態で変更することをお勧めします。
もちろん、バックアップも大事です。
もしCrowdの Java APIでやるとしたら、以下APIを使えばできますかね...
https://docs.atlassian.com/atlassian-crowd/current/com/atlassian/crowd/directory/AbstractInternalDirectory.html#renameUser(java.lang.String, java.lang.String)
UIを操作するプログラム でも、意外と簡単ですね。
Curl コマンドのみでもできるかも知れません。
- 伊藤看寿
ありがとうございます。 わたしも cwd_user, cwd_membership の UPDATE でいけるのではないかの認識です。
コメントを追加... - 対象ユーザーのディレクトリIDを確認します。
- 210
Crowdでユーザ名を一括して変更したい と同じ質問でしたね。すみません・・・。
コメントを追加...
Crowd 2.7でユーザー名の変更ができるようになりましたが、REST API はいまだ未対応のようです。
https://answers.atlassian.com/questions/250162/crowd-username-changes-through-rest-api
数百人のユーザー名を一括変更したいのですが、何か良い解決策はないでしょうか。
私の頭の中には SQL、CrowdのJavaAPI、UIを操作するプログラム、あたりが浮かんでいます。