2
1
0

Crowd 2.7でユーザー名の変更ができるようになりましたが、REST API はいまだ未対応のようです。

https://answers.atlassian.com/questions/250162/crowd-username-changes-through-rest-api

 

数百人のユーザー名を一括変更したいのですが、何か良い解決策はないでしょうか。

私の頭の中には SQL、CrowdのJavaAPI、UIを操作するプログラム、あたりが浮かんでいます。

    Commentコメントを追加...

    3 回答

    1.  
      2
      1
      0

      SQLでやるとしたら...

      1. 対象ユーザーのディレクトリIDを確認します。
        1. (情報) CrowdのURLで確認することができます。 
          1. Crowd BASE URL/crowd/console/secure/directory/viewinternal.action?ID=<ディレクトリID> です。
      2. cwd_user テーブルでそのユーザレコードを特定します
        1. (情報) SELECT * FROM cwd_user WHERE user_name = '<ユーザ名>' AND directory_id = <ディレクトリID>
      3. 2のレコードの user_name, lower_user_name を変更します。
        1. (情報) UPDATE SET user_name = ... (割愛)
      4. cwd_membership テーブルの membership_type が GROUP_USER のレコードを特定します。
        1. (情報) SELECT * FROM cwd_membership  WHERE child_name = '<ユーザ名>' AND membership_type = 'GROUP_USER' AND directory_id = <ディレクトリID>
      5. 4のレコードの lower_child_name、child_name を変更します
        1. (情報) 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 コマンドのみでもできるかも知れません。

      1. 伊藤看寿

        ありがとうございます。 わたしも cwd_user, cwd_membership の UPDATE でいけるのではないかの認識です。

      Commentコメントを追加...
    2.  
      2
      1
      0

      Crowdでユーザ名を一括して変更したい と同じ質問でしたね。すみません・・・。

        Commentコメントを追加...