UiPath AssistantからOrchestratorへ接続した際に、ライセンスステータスが「接続済み、ライセンスなし」と表示される場合の対応方法

# 背景
Orchestratorを利用している場合、StudioやRobotを利用するには、Assistantを使ってOrchestratorに接続し、ライセンスを取得する必要があります。しかし、Orchestratorからライセンスが取得できず、ライセンスステータスが「接続済み、ライセンスなし」と表示されることがよくあります。そこで、今回は、このような場合にどのように対処するかについて紹介したいと思います。

# 詳細メッセージを確認する
ライセンスを取得できない原因は様々です。まず、UiPath Assistantのライセンスステータスにマウスオーバーすると、詳細メッセージがポップアップ表示されます。このメッセージにより、ライセンスが取得できない原因を特定することができます。

## 詳細メッセージ１：「対話型ログインを使用」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327566/3aa93e79-efb3-2ff8-8157-0e9483b30cbf.png)

* 発生条件：
    * テナント設定ページ セキュリティタブの「ユーザー認証を強制し、ロボット認証を無効化」にチェックが入っている。（Automation Cloudのユーザー ライセンス管理が有効になっている場合、必ずこの設定になります）
    * マシンキー接続またはクライアント資格情報によってOrchestrator接続している。

　　※Robot v2022.4では、Assistant画面に「Unattended ロボットとして接続しています。デバッグを行うには、サインインするか、Orchestrator でトラブルシューティング セッションを有効化してください。」と表示されるようになりました。

* 対応方法１：
Unattendedロボットとして利用する場合、ユーザーがAttendedライセンスを取得していなくても、マシンがUnattendedランタイムを取得している限りUnattended実行できますのでこのまま利用して良いです。

　マシンがUnattendedランタイムを取得しているかどうかは、Orchestratorの以下いずれかの画面にて確認することが可能です。
　・テナント > ライセンス > Unattended詳細画面
　・テナント > ロボット > 無人セッション画面（Orchestrator v21.10）
　・テナント > 監視 > 無人セッション画面（Orchestrator v22.4以降）

* 対応方法２：
 [無人セッション] 画面でマシンの [トラブルシューティング セッション] を有効化することで、一時的にAssistantからプロセス実行してトラブルシューティングできるようになります。
無人プロセスがそのマシンで意図通り動作しない時にワークフロー実行のどこで躓いているのかトラブルシューティングする等の目的で、Assistantからプロセスを一時的に有人実行したり、Studioからワークフローを一時的にデバッグ実行したりする場合に利用します。


* 対応方法３：
マシンキー接続後にAssistant上部の人形マークから「サインイン」することで、「接続済み、ライセンス済み」となりAttended実行することができるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327566/767c33f6-f98e-5a12-db25-a1f1192525ee.png)

## 詳細メッセージ２：「サーバー上に使用可能なライセンスがありません。」
* パターン１
各ロボット端末が取得済みのUnattendedライセンス数の合計が、テナントに割り当てられたUnattendedライセンス数を上回り、テナント上のUnattendedライセンスが不足した場合、このメッセージが表示されます。
ロボット端末は、Orchestrator上で登録したマシン（マシンテンプレート）に設定したランタイム数をOrchestratorから取得します。
以下方法でロボット端末がUnattendedライセンスを取得できるよう調整してみてください。
・テナント > ライセンス > Unattended詳細ページにて、対象Unattended以外のマシンをディアクティベートする
・Studio、Attended、Unattendedは其々のマシンテンプレートを利用し、Unattended用にのみUnattendedランタイムを割り当てる
・利用するマシンテンプレートに割り当てるUnattendedランタイムを減らす
・テナントに割り当てるUnattendedライセンスを増やす

* パターン２
ユーザーがAttendedロボットを無効化し、Unattendedロボットを有効化した状態で、マシンキーを使用せずにUiPath Assistantにサインインした場合、このメッセージが表示されることがあります。
Unattendedロボットとして利用する場合には、Assistantからサインアウトし、サービスモードに切り替えた上でマシンキーまたはクライアント資格情報を用いて接続します。（ユーザーモードでのUnattendedロボット利用は非推奨です）
Attendedロボットとして利用する場合には、ユーザーのAttendedロボットを有効化します。
Orchestratorのバージョン22.10以降では、テナント > 「アクセス権を管理」 > 「個人オートメーションの設定」にて、「ユーザーによるオートメーションの実行を有効化」にチェックが入っていることを確認します。

* パターン３
Attendedロボットを有効化して特定ライセンス（Automation Developer等）を指定した状態で、Orchestratorテナントのライセンス更新によって該当ライセンスが 0 になった場合に、本エラーが表示されます。
テナントに割り当てられたAttendedロボットのライセンスを確認し、利用可能なライセンスを各ロボットに割り当てなおします。

## 詳細メッセージ３：「認証トークンが無効です」「現在の権限ではこのアクションを実行できません。」
ロボットが別テナントに対話型サインインしたまま、他テナントにマシンキー接続した際に表示されます。
Assistantから「サインアウト」することで解消します。

## 詳細メッセージ４：「ロボットなし」「Robot は存在しません」
ロボット端末で利用しているWindowsアカウントで、Orchestratorにロボットが登録されていない場合に表示されます。
対話型ログインでOrchestratorに接続する場合には、対話型ログイン時にOrchestrator WebページにログインするユーザーアカウントのAttendedロボットを有効化します。
マシンキーまたはクライアント資格情報を使用して接続する場合は、以下の手順を実行します。
1. ユーザーアカウントまたはロボットアカウントのUnattendedロボットを有効化します。
2. Orchestrator v2022.4以降では、「マシンのログイン資格情報」、v2021.10以前では「フォアグラウンドオートメーションを実行」にチェックを入れます。
3. ロボットが利用するWindowsアカウント（コマンドプロンプトで「whoami」を実行すると表示されます）とそのログインパスワードを指定します。

## 詳細メッセージ５：「ログインの期限が切れました。サインアウトして、もう一度サインインしてください。」
対話型サインインによってOrchestrator接続した場合には、定期的にユーザーがサインインしなおす必要があります。
Assistant上部の人形マークから「サインアウト」し、対話型サインインしなおすことで解消します。

## 詳細メッセージ６：「ライセンスを取得できません。」
Automation Cloudのユーザーライセンスモデルを使用してAttendedロボットを利用する場合、ユーザーにAttendedライセンス（例えばAutomation Developerなど）が割り当てられていない場合に、このエラーが発生します。
Automation Cloudの「管理」>「ライセンス」画面で、該当ユーザーにAttendedライセンスを割り当てられていることを確認します。

## 詳細メッセージ７：「マシンが Orchestrator で定義されるのを待機しています。」（Waiting for the machine to be defined.）
接続文字列パラメーターを指定してロボットインストールした際に、ロボット端末のホスト名に一致する標準マシンがOrchestratorで未登録の場合に発生します。
ロボット端末のホスト名に一致する標準マシンをOrchestratorに登録することで、エラー解消してロボットがOrchestratorに自動接続されます。
※接続文字列はv2020.10以前のOrchestratorで利用できます。v2021.4以降のOrchestratorでは、接続文字列の代わりに UiRobot.exe --connect コマンドの利用をご検討ください。

# 終わりに
上記の方法で「接続済み、ライセンスなし」エラーを解消できると嬉しいです
上記以外のパターンに気づいた場合は、ぜひコメントをお願いします。