We have a business scenario where we have clients that can have 1 to many distribution channels. What would be ideal is if we could use the Tenant feature to represent our clients, and some sort of grouping within the tenant to handle the 1 to many distribution channels. For example…
Client A has distribution channels 1, 2, 3
Client B has distribution channel 4
Client C has distribution channel 5, 6, 7, 8, 9, 10
Would there be an effective way to handle such a deployment scenario, or do I have to break down the Tenants down to the distribution channel level? The reason that I ask, is that the actual numbers are more like 50 clients, with a total of around 900 distribution channels.
If we must create the distribution channels as tenants , does Octopus have any sort of limit on the number of tenants that can be displayed on the Overview page within a project? Do you feel that say 900 tenants would be a drain on the screen rendering performance within Octopus?
And… if we are to do 900 tenants, is there a way to script the creation of the 900 channels? I have looked at the documentation for the octo.exe command line, and I am not seeing any option listed.
Thanks for getting in touch! I would need to know a little bit more about your domain and what you exactly mean by Distribution Channel before I can suggest a concrete solution. Can you provide me with a few specific examples?
That being said you could try to represent clients as tenants and distribution channels as tenant tags.
We have customers with 1400+ tenants and that page seems to work for them. Each tenant is a separate row so the table simply grows vertically.
Think of the scenario as this. Our clients have different groups of sales agents, which sell different products per group. Thus you have company A which has sales group 1 selling product 1, group 2 selling product 2 and group 3 selling product 3. The next company can have 1 to many groups as well. For each of the groups, we need to deploy custom content/packages to our servers.
Our actual process will be Jenkins creating the packages, and creating an Octopus release via the API. Right now we have setup the tenants as the company level, so you see company A, B and C in the Overview page. When it comes time to deploy content to company 1 groups 1 and 2 at the same time, we are unsure how Octopus will react, meaning will it still deploy both releases? Or will only the latest to be requested actually be deployed. The UI will then also not reflect what was deployed to both group 1 and 2 without digging through history. Thus it would be better for us to show groups 1 and 2 as two separate entries on the screen in the Overview page. This is why I am asking if there is the ability to group the groups together underneath the tenant, or do we have to create each company/group combination as a tenant?
As well, you did not mention whether or not Octopus supports setting up tenants in a bulk mode? Either via the Octo.exe command line, or another process. To use the UI to manually setup 900+ tenants would be unreasonable to ask anyone to do.
If any of this does not make sense, I would be happy to sit with someone either on Skype or WebEx to review what we have currently, and to hopefully explain better.
In general you can’t model a tree structure in Octopus using Multi Tenancy. That being said the best way to see whether MT is a good fit for your problem is to implement a few different approaches. Feel free to send me screenshots of them once you have them. MT is not a simple concept so it might take you a bit of time to fully understand it but that investment will pay off in the future.
You can script bulk tenant creation using our API. Octopus portal uses the same API so if you are not sure how to do something you can always open dev tools and inspect calls made by our front-end code.
For me to provide a better advice, I would need a very specific description of the problem you are trying to solve. A detailed description of one of your current main use cases (even if it’s manual or only partially automated) would be a great start. I would also appreciate if you could use specific names (e.g. CRM versus Product 1) as that would help me get familiar with your domain. The names don’t have to be the names of your actual products/clients/etc.
Thanks Pawel for the response. I did not get a notification of your response, so sorry for the delay in getting back to you. I was unable to determine how to upload a Word document with some screenshots. Let me know how to upload or where to email it, and hopefully the document will give a better explanation of what we are attempting.
Your solution is great and I can’t think of anything better.
The only way to make sure 900 tenants are going to perform well on your hardware is to create an instance with that amount of data. We have an Open Source project which you can use to simulate that load.
Please let me know if I can help you any other way.