Robot and Multi Tenant usage

Hello hello,

Would like to know the behavior of using single robot registration in multiple tenant . Will it supported by 2017 / 2018.1 or yet to come?
saw few threads… nothing answered the question.

Hi balaraman,

You can provision the same Robot to different tenants, but with different keys. The Robot will not be available on the two tenants in the same time but it will depend on the key you are using to connect.

So if you provision a Robot on tenant1 with key1 and on tenant2 with key2, then all you have to do is to change the key when connecting the Robot to Orchestrator. This is because a Robot cannot run two processes in the same time so there is no point in having it available on different tenants.

It is not supported to provision a Robot in different tenants with the same key.

Thanks ovi.

The real reason for this question is customer want to max utilize the robot. As you have mentioned, I did highlighted the point its not possible/recommended to use the same key in different tenant.

I still feel, going manual switching of the key of the robot machine is pain.

By the any news about the container feature in Orchestrator?

Regards,
Balram

1 Like

I have same issue here. To max utilize the robot, we have to put many process in one tenant. However, in one tenant, it difficult to manage authorities if there are too many users and processes… Hope it can support to cache the keys, which can release the pain a little.

Hi @ovi,

Since HDR requires to have the same key for the same robots registered, You cannot create robots out of the same High density server and allocate them to different tenant.

Might be interesting to document this saying under the About HDR section that they need to be part of the same tenancy.

If it is already documented, my mistake :slight_smile:

Cheers

2 Likes

Hi Florent,

It’s not yet documented, thanks for the suggestion.

@Madalina_Boboc would you please consider this?

Added in the following places:

Thanks a lot for the suggestions! :smiley:

1 Like

Hey @ovi,

I tried your suggestions but when I try to connect using tenant2 with key2, it throws the following error:
image

Invalid machine key
RemoteException wrapping UiPath.Service.Orchestrator.Clients.OrchestratorHttpException: Invalid machine key
at UiPath.Service.Orchestrator.OrchestratorClientExtensions.d__3.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Orchestrator.Clients.OrchestratorBaseClient.d__61.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at UiPath.Service.Orchestrator.Clients.OrchestratorBaseClient.<RequestAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at UiPath.Service.Orchestrator.Clients.OrchestratorBaseClient.<RequestAsync>d__41.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Orchestrator.Clients.OrchestratorClient.d__13.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Orchestrator.OrchestratorController.<PerformConnect_LicenceKeyAsync>d__15.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at UiPath.Service.Orchestrator.OrchestratorController.<PerformConnect_LicenceKeyAsync>d__15.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Orchestrator.OrchestratorController.d__24.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Messages.MessageDispatcher.d__21.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Service.Impl.RobotService.d__28.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Ipc.Server.d__22.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Ipc.Server.d__21.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Ipc.Server.<>c__DisplayClass3_2.<<-ctor>b__5>d.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Ipc.IOHelpers.d__3.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at UiPath.Ipc.IOHelpers.d__8`1.MoveNext()

Thoughts on what else might I be doing wrong?
Thank you!