Mini Role is a new feature introduced in SharePoint Server 2016. It optimizes
the functioning of the servers in a SharePoint farm, based on the role they have
been assigned. So, when you are configuring the server, depending on the intended
functionality, you may choose the appropriate Mini Role, as shown below.
Mini Role |
Functionality |
Custom |
Custom service applications, services, and components that do not integrate with Mini Role, belong on Custom servers. The farm administrator has full control over which service instances can run on servers assigned to the custom Role. |
Web Front End |
Services end user requests, optimized for low latency. |
Single Server Farm |
Provisions all services on the server for a single server deployment. This role is provided for evaluation and development purposes. |
Search |
Reserved for Search services. |
Application |
Services the backend jobs or the requests triggered by backend jobs, optimized for high throughput. |
Distributed Cache |
Services distributed cache for the farm. Optionally, the server assigned to this role can load balance end user requests among the web front ends. |
Table Source - Microsoft MSDN
When you are configuring the farm using SharePoint Products Configuration wizard, we will get a window where we can specify the Server Role, as shown below. Depending on the requirement, we can select one of the roles for the current server. If we are configuring a search server, we should select ‘Search’ Mini Role else if we are looking to configure SSRS Reporting Services, we should be selecting ‘Custom’ Mini Role and so on.
However, there can be instances where we create a server using one Mini Role and we would like to change the role to a different one; say, we created the server using ‘Front-end’ role and at a later point, we are deciding to change it to ‘Search’ role. In this article, we will see how we can do that, using UI and PowerShell.
Change Mini Role from UI
Let's see how to do this from UI. From Central Administration, select "System Settings" options.
From system settings, select ‘Convert server role in this farm’.
Here, we will see the available servers and their roles in the farm. Against each server, there is a drop down that states ‘New Role’.
Expand the drop down and select the new role that we would like to assign to the server.
It has now been assigned the Search Role. Click on ‘Apply’.
This would start the role conversion process which is controlled by a SharePoint timer job.
Finally the role conversion is completed.
Heading over to the previous page, we can see that the new role has been assigned to the server.
Change Mini Role using PowerShell
We can also change the Mini Role using PowerShell. In order to do that ,spin up SharePoint 2016 Management Shell as administrator.
Run the command ‘Get-SPServer’ to get the servers and their current roles in the farm.
Running the below command will list out all the Mini Roles that are available for assignment.
[System.Enum]::GetNames([Microsoft.SharePoint.Administration.SPServerRole])
Now, let’s try to assign a new Mini Role to the server by running the below command. This will assign the server the mini role – ‘WebFrontEnd’.
Set-SPServer -Identity "SP2016S2" -Role "WebFrontEnd"
The role conversion process is performed by a timer job. We can get the status of the timer job by running the below command. On successful completion of the time job, we will not be getting any specific return messages. It will complete the command execution and go to the next line, as shown below; else, we will get a message stating that the timer job has not run.
Get-SPTimerJob “Timer Job ID”
We can also verify the timer job from ‘Central Administration -> Review Job Definitions’.
Here, we can spot the ‘Server Role Conversion Job’ timer job and check its status.
Once it has run to completion, we can head over to the ‘Servers in Farm‘ page. Here, we can see that the server has been assigned a new Mini Role.
Summary
Thus, we saw how to change the already assigned Mini Role of a SharePoint 2016 Server within the farm from UI as well as using PowerShell.