Cloud への移行時にメール アドレスが欠落している
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
要約
Data Center からクラウドに移行する際には、ベスト プラクティスに従って環境を準備することをお勧めします。これらは、Jira と Confluence の移行の事前チェックのチェックリストに記載されています。
移行に不可欠な要素の 1 つは、ソースとターゲットの間でのユーザーのエクスポートとインポートです。Atlassian Cloud では、すべてのユーザーに有効かつ一意なメール アドレスが必須です。この記事では、ユーザー アカウントにメール アドレスがない場合の解決方法について説明します。
特定する
次のいずれかの方法を使用して、無効なメール アドレスを持つユーザーを特定します。
Migration Assistant でユーザーを自動的に特定する (Jira のみ)
Migration Assistant を使用してユーザーを評価して、要件を満たしていないメール アドレスを持つユーザーを特定します。メールがない場合は無効と見なされます。この評価は、移行前であればいつでも実行できます。
アドレスを持たないユーザーを特定するには、次の手順に従います。
まず、Jira Cloud Migration Assistant を開きます。
[Assess and prepare users (ユーザーの評価と準備)] カードで、[Begin assessing (評価を開始)] を選択します。これにより、空の結果のページが開きます。
評価を開始するには、[Begin assessing (評価を開始)] を選択します。
評価が完了すると、無効なメール アドレス (メール アドレスの欠落を含む) および重複したメール アカウントを含む結果が表示されます。
評価および次のステップに関する詳細は、「移行のためにユーザーを評価および準備する」を参照してください。
データベース上でユーザーを特定する
データベースで次のクエリを実行することで、無効なメール アドレスを持つユーザーを特定することもできます。
SELECT *
FROM cwd_user
WHERE (email_address IS NULL OR email_address = '')
OR (lower_email_address IS NULL OR lower_email_address = '');
このクエリの出力では、メール アドレスを持たないすべてのユーザー レコードが特定されます。このテーブルには次の 2 つの列があります。
- email_address
- lower_email_address
データベースに対して SQL クエリを実行する際には、これらの列の両方を考慮してください。一方にデータが入力され、もう一方が空になると、意図しない結果になる可能性があるためです。
ソリューション
移行元のユーザー ディレクトリでメール アドレスを手動で修正するか、移行アシスタントで自動オプションの 1 つを選択して、移行中にユーザーを更新することができます。
ユーザー ディレクトリ内で有効なメールアドレスを手動で作成して更新する
有効なメール アドレスを手動で作成することができます(例: user@atlassian.com)そして、LDAP サーバーや Data Center インスタンスなど、使用しているユーザー ディレクトリでそれらを更新してください。
Server または Data Center インスタンスでユーザーのメール アドレスを更新するには、以下の手順に従ってください。
[管理] > [ユーザー管理] を選択します。
ページの一番上にあるフィルターを使用して更新したいユーザーを探します。
ユーザー名の隣の[編集]を選択します。
メール アドレスを更新して、[更新] を選択します。
移行中に自動でユーザーを更新する (Jira のみ)
このオプションは、Jira Cloud Migration Assistant でのみ利用できます。
移行アシスタントの「Jira Cloud Migration Assistant でユーザーを自動で特定するユーザーを自動的に識別する」セクションで説明した評価が完了したら、次のステップとして、移行アシスタントで無効なメール アドレスを修正できます。この方法を選択した場合、移行元のディレクトリのユーザーは更新されず、移行中に Cloud で作成されたユーザーだけが更新されることに注意してください。
これらの自動修正は、古いアカウントやテスト用アカウントなど、重要でないアカウントに適用されるべきです。Cloud を使用する実際のユーザーは、ユーザー ディレクトリ内で更新する必要があります。
無効なメール アドレスを自動で修正する方法
Migration Assistant の[Assess and prepare users] セクションで、結果を表示します。
結果を表示したら、[Fix invalid emails] を選択します。
いずれかのオプションを選択して、無効なメール アドレスを修正します。各オプションの詳細は、「無効なメール アドレスを修正する」を参照してください。
メールを持たないユーザーを除外するように LDAP フィルターを更新する
場合によっては、修正するメールの数が膨大にあり、多大な労力と確認が必要になることがあります。メールを持たないのは、多くの場合、サービス用アカウント / 人間以外のアカウント / 部門用アカウント、または上流のユーザー ディレクトリ内の非アクティブなユーザーです。上記の SQL クエリを実行すると、メールを持たないこれらのユーザーを除外できます。これらのユーザーはアプリに存在しなくなり、ログインできなくなることに注意してください。
ローカル システム管理者としてアプリにログインします。ログインに使用した可能性のある現在の LDAP 接続は編集できません。
[設定] メニューからユーザー ディレクトリを開きます (Jira - 「ユーザー ディレクトリの設定」、Confluence - 「ユーザー ディレクトリの設定」)。
該当するディレクトリ接続の [操作] 列の [編集] をクリックします。
[ユーザー スキーマ設定] までスクロールして、折りたたみ部分を展開します。
(mail=*) を適切にネストして、[ユーザー オブジェクト フィルター] を更新します。たとえば、次のように変更します。
変更前:
(&(objectCategory=Person)(sAMAccountName=*))
変更後:
(&(objectCategory=Person)(sAMAccountName=*)(mail=*))
今後
[クイック テスト] をクリックして、別のブラウザーで自分のアカウントにログインできることを確認します。
テストが完了したら、[保存およびテスト] をクリックします。ディレクトリ接続設定を更新すると、ユーザー ベースが更新されます。上記の SQL クエリを実行して、まだメールが見つからないかどうかを確認できます。
その他の提案
メールを持たないユーザーを除外しても問題が解決しない場合は、次のようにしてください。
- Active Directory / ID 管理者に問い合わせて、メールを持たない / 同期してはいけないユーザーを特定するために使用できるローカル カスタム属性があるかどうかを確認してみる価値はあります。これは、ベース DN を更新することで実現できます。
Active Directory で非アクティブ化されたユーザーは、Microsoft の userAccountControl パラメーターを使用して除外できます。次の方法でフィルターを更新してください。
(&(objectCategory=Person)(sAMAccountName=*)(mail=*))to
(&(objectCategory=Person)(sAMAccountName=*)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))(userAccountControl:1.2.840.113556.1.4.803:=2)は、Active Directory で非アクティブ化されたすべてのユーザーを定義するものであるため、このフィルターではアクティブなユーザー (非アクティブ化されていないユーザー) のみが保持されます。
詳細なヒントについては、「LDAP 検索フィルターの作成方法」を参照してください。
データベースでユーザーを手動で更新する
多くの場合、上流の修正や LDAP フィルターの更新は、さまざまな要因によって常に可能であるとは限りません。別の方法として、Migration Assistant での事前チェック中にユーザーを検証してユーザー ベースを正常に移行できるように、一時的なメール アドレスまたはプレースホルダーのメール アドレスを割り当てることもできます。
SQL クエリで使用できるドメインを生成します。次の例では、http://domain.com を使用しています。
ユーザー アカウントの一意の識別子を生成します。次の例では、user- を使用し、ユーザー ID の値を追加しています。これにより、名前は常に一意になるはずです(user-1@domain.com、user-2@domain.com)。
次の SQL クエリのいずれかを実行します。
データベースの変更を行う前に必ずデータをバックアップしてください。可能であれば、まずステージング サーバーで、すべての変更、挿入、更新、または削除の SQL コマンドをテストしてください。
Postgres
UPDATE cwd_user
SET email_address = 'user-' || id || '@domain.com',
lower_email_address = 'user-' || id || '@domain.com'
WHERE (email_address is NULL or email_address = '') or (lower_email_address is NULL or lower_email_address = '');
MySQL
UPDATE cwd_user
SET email_address = CONCAT('user-',id,'@domain.com'),
lower_email_address = CONCAT('user-',id,'@domain.com')
WHERE (email_address is NULL or email_address = '') or (lower_email_address is NULL or lower_email_address = '');
Oracle
UPDATE cwd_user
SET email_address = 'user-' || id || '@domain.com',
lower_email_address = 'user-' || id || '@domain.com'
WHERE (email_address is NULL or email_address = '') or (lower_email_address is NULL or lower_email_address = '');
MS SQL Server
UPDATE cwd_user
SET email_address = CONCAT('user-',id,'@domain.com'),
lower_email_address = CONCAT('user-',id,'@domain.com')
WHERE (email_address is NULL or email_address = '') or (lower_email_address is NULL or lower_email_address = '');
上記の SQL クエリは、email_address と lower_email_address の 2 つの列のどちらが空であるかに応じて列を更新するものです。データが入力されているフィールドが 1 つしかない場合も考えられます。状況によっては SQL クエリを変更する必要がある場合があるため、この点に留意してください。