Office 365 For WHMCS
About Office 365 For WHMCS
|Office 365 For WHMCS has been designed to let you automatically provision Microsoft Office 365 plans and remotely manage their key features.|
With this module, you will easily supervise all subscriptions, perform switches and suspensions as well as password changes right in your WHMCS.
- Admin Area Features:
|✔ Create/Suspend/Unsuspend Office 365 Subscriptions|
|✔ Choose Standard/Extended Provisioning Type|
|✔ Create/Suspend/Unsuspend Addon Services For Standard Provisioning Type|
|✔ Create Office 365 Customer During First Or Every Order|
|✔ Create Office 365 Client During First Or Every Order|
|✔ Define Number Of Subscriptions Available For Order|
|✔ Change Package|
|✔ Change Password|
- Client Area Features:
|✔ Standard Provisioning Type:|
|✔ Automatically Create Office 365 Customer/User/Subscription|
|✔ Upgrade/Downgrade Office 365 Subscriptions|
|✔ Extended Provisioning Type:|
|✔ Order Chosen Number Of Subscriptions|
|✔ View/Create/Delete Office 365 Users|
|✔ Assign Available Subscriptions To Users|
|✔ View Subscriptions Usage, Status And Commitment End Date|
|✔ Upgrade/Downgrade Number Of Office 365 Subscriptions|
|✔ Change Password|
- Supported Services:
|✔ Office 365 Education/Education E5|
|✔ Office 365 Business/Business Essentials/Business Premium|
|✔ Office 365 ProPlus/Enterprise E1/E3/E5/K1|
|✔ Standalone Services:|
|✔ Business Intelligence Service|
|✔ Exchange Online|
|✔ Information Rights Management|
|✔ Office Applications|
|✔ OneDrive For Business|
|✔ Online Diagram Software|
|✔ Project Portfolio Management|
|✔ SharePoint Online|
|✔ Skype For Business Online|
- General Info:
|✔ Requires Microsoft Partner Network|
|✔ Requires Microsoft Cloud Solution Provider - Direct (Tier 1) Model|
|✔ Supports PHP 5.6 Up To PHP 7.2|
|✔ Supports WHMCS Template Six|
|✔ Supports WHMCS V7.2 And Later|
|✔ Easy Module Upgrade To Open Source Version|
|This tutorial will show you how to successfully install and authenticate Office 365 For WHMCS.|
We will guide you step by step through the whole installation and configuration process.
|1. Log in to our client area and download the module.|
|2. In the downloaded file you will find two packages that support different PHP versions.|
As presented on the screen below, the first one is dedicated to PHP 5.6 up to PHP 7.0, while the second one is aimed at PHP 7.1 up to PHP 7.2.
It does not apply to open source versions.
Note: You can check the current PHP version in your WHMCS. To do so, proceed to 'Utilities' › 'System' › 'PHP Info'.
|3. Extract the downloaded file and choose the one with the right PHP version. Upload and extract the PHP file into the main WHMCS directory.|
The content of PHP version files should look like this.
|4. When you install Office 365 For WHMCS for the first time, you have to rename the 'license_RENAME.php' file.|
The file is located in 'modules/servers/office365/license_RENAME.php'. Rename it from 'license_RENAME.php' to 'license.php'.
|5. In order to configure your license key, you have to edit the previously renamed 'license.php' file.|
Enter your license key between quotation marks as presented on the following screen. You can find your license key in our client area → 'My Products'.
|6. Now, set up the 'storage' folder as recursively writable.|
This folder is located in 'your_whmcs/modules/servers/office365'.
Obtaining API Details
|Before you start to configure the server, you need to obtain some neccessary data to connect to API.|
The data you need:
In the next steps, we will guide you through the process of getting the data.
Note: All of the following data is only an example, so please be aware that some discrepancies can appear on the screens below.
Creating Application in Microsoft Azure
|The first step is to create an application in your Azure Active Directory if you do not have it yet.|
Log in to your panel in Microsoft Azure.
|On the newly opened page, choose 'App registrations' from the left menu, and then click on 'New registration' .|
|Enter an application name on the newly opened page. Leave the selected by default 'Supported account types' unchanged .|
Later, you need to provide the web 'Redirect URI' . This address must directly lead to the 'auth.php' file located in the folder with the module on your WHMCS server. For example:
Please make sure that it is correct and reachable from outside - your WHMCS server must accept SSL connections.
|After clicking on the 'Register' button, you will be redirected to the page that generated your application data.
There you will find:
Write it down, as you will need it afterwards to configure the server in WHMCS.
|Next, go to the 'Certificates & secrets' tab from the side menu and click on 'New client secret' .|
|Before adding, provide it with a description and set 'never' in the 'Expire' option.|
|A new Client Secret will be created. Copy it to a safe place, as you will need it later for the server configuration in WHMCS.|
Important: Copy the new client secret value now. You will not be able to retrieve it after you perform another operation or leave this blade!
|Now, you need to set appropriate permissions. To do so, move to the 'API permissions' tab and click on 'Add a permission' .|
|Choose 'APIs my organization uses' and then 'Microsoft Partner Center' from the list.|
|Tick the 'user_impersonation' permission and click on 'Add permissions' .|
|After adding permissions, click again on 'Add a permission' and then, from the 'Microsoft APIs' tab, choose 'Microsoft Graph'|
|Select the 'Delegated pemissions' type as well as find and tick 'offline_access' on the list.|
|Moreover, on the same list, find and mark 'User.Read' and finally click on 'Add permissions' .|
|Lastly, the scheme of allocated permissions should look as presented below.|
If it is correct, click on 'Grant admin consent for <your company name>' and confirm this action.
Creating Key Vault
|The final step in getting the data needed to connect to API is to generate Key Vault.|
Azure Key Vault is a cloud service used to manage keys, secrets, and certificates.
To create Key Vault, you will need the application again, but this time with other permissions.
Note: Key Vault can be generated in another Microsoft account, including live environment, if it turns out that you do not have access to it for some reasons, for example from your test environment.
At the beginning, follow the same steps as when setting up the application in Microsoft Azure. That is:
Here, the differences appear, because Application For Key Vault demands different permissions. This is:
As before, let's add permissions.
|Select 'Azure Key Vault' from 'Microsoft APIs' .|
|Next, tick 'user_impersonation' .|
|After adding permissions, you should see the same result as below. |
Finally, do not forget to click on 'Grant admin consent for <your company name>' .
Note: In theory, it is possible to generate Key Vault with only one application, that combines all the previously granted permissions for two applications in one.
|Now, move to the 'Key Vaults' section. The fastest way is to use the search engine.|
|If you do not have Key Vault yet, you can create it here by following the on-screen instructions. |
Add a name, subscription, region, pricing tier and other targets.
More info about creating and using Azure Key Vault, can be found here.
If you already have Key Vault generated, select it from the list.
|Before you gather all required data, you need to give appropriate permissions in your Key Vault to the previously created application. |
To do so, proceed to the 'Access policies' section in your Key Vault and click 'Add Access Policy' .
|Next, from the 'Secret permissions' dropdown, select the following permissions in the 'Secret Management Operations' part:
|As a next step, in the 'Select a principal' tab, find your previosuly created application then mark it and press 'Select' in order to give your application formerly defined permissions.|
Finally, to confirm adding the access policy, click 'Add' .
|Finally, go to the 'Overview' section and write down the generated:
which are needed to configure the server in WHMCS properly.
Registration of Application in Microsoft Partner Center
|Lastly, once two applications in Microsoft Azure and Key Vault are ready, you need to register the first created application in Microsoft Partner Center.|
Log in to the dashboard of Partner Center, and then go to 'Partner Settings' from the dropdown menu in the top right corner.
Note: To log in, use the account where the first application was created.
|From the 'Account Settings' submenu, choose 'App Management' , and for the 'Web App' type, click on 'Register Existing App' .|
|On the list, find the first created application in Microsoft Azure in the previous steps of this manual and click 'Register your app' .|
|From now on, your application should be properly registered in Microsoft Partner Center, and you already have all the data required to connect the module to API.|
Configuration of Server
|7. To begin, you must add a new server.|
Go to 'Setup' → 'Products/Services' → 'Servers' and press 'Add New Server'.
Note: If you have WHMCS V7.8.X or later, we recommend using your 'previous experience' of the server configuration instead of the new wizard tool.
|8. When the server configuration page opens, enter a server name at first.
Note: The 'Hostname' field is not used by the module, but if you use WHMCS V7.8.X, then a fatal error may occur when trying to save server settings without it providing any hostname or IP address details.
Next, choose 'Office365' from the dropdown menu.
The 'Username' and 'Password' fields should be felt empty- they are not used by the module.
Now, fill in the previously obrained API data. They are as follows:
After completing the data, remember to 'Save Changes' .
|You will be redirected to your Microsoft account for a moment.|
Use the same data as for the Azure account, on which you generated the first application.
| If everything proceeded correctly, you will be redirected to your WHMCS again.|
Now, you can run the test connection of your server to make sure that all data is proper.
|9. Once your server has been configured correctly, you will see the following screen.|
Create a new group for your server. Press 'Create New Group' to follow.
|10. Enter a name, click on your previously created server, press 'Add' , then 'Save Changes'.|
Configuration of Product
|11. In order to create a product, go to 'Setup' → 'Products/Services' → 'Products/Services' .|
If you do not have a product group, click on 'Create a New Group' . If you do, simply move to the 12th step.
|12. Fill in a product group name and press 'Save Changes'.|
|13. When you have a product group added, you can create your product and assign it to the Office 365 module.|
|14. Afterwards, choose your product type and product group from dropdown menus, enter your product name and press 'Continue' .|
|15. Now, go to the 'Module Settings' section, choose both 'Office365' and the previously created server group from the dropdown menu, and press 'Save Changes' .|
| 16. Then, go to the 'Custom Fields' tab and make sure that it displays the three created 'text box' custom fields.|
These are: userid|User ID, orderid|Order ID and customerid|Customer ID. If they were not automatically created, then add them manually as shown on the following screen.
Configuration and Management
|Configuration and management of Office 365 For WHMCS is very intuitive. |
Before you start, please note that there are two provisioning types you can offer to your clients.
Standard Provisioning Type
|Let's start the module configuration by choosing the 'Standard' provisioning type.|
Now, choose 'Country'. that you will offer your Office 365 services from.
Note: Available subscription offers and additional services depend on your Microsoft membership coverage and may be limited by the location.
In order to offer additional services for a standard product plan, you need to create a new addon first.
Important: addons are applicable only to standard provisioning types, not to extended ones.
|Enter a name of the addon, choose the addon to be visible during the ordering process and configure the rest of the desired options.|
|Go to the 'Applicable Products' tab and select the product that you want to offer this addon for. Then press 'Save Changes' .|
|Important! Please leave both: 'Module Name' and 'Server Group' set to NONE in the addon module settings.|
Selecting any server or module here will surely end up with an error!
|Go back to your product and connect the created addon with one of the available additional services in the 'Module Settings' tab.|
|Finally, 'Save Changes' . Remember that you can also add more addons for services.|
|Once the product configuration is complete, clients will be able to order the selected subscription and addons.|
The standard provisioning type does not support any additional features in the client area.
Extended Provisioning Type
|The extended provisioning type allows your client to order the chosen number of licenses using configurable options and then manually redistribute them in their client area among the created Office 365 users.|
Enable this configuration type by choosing the 'Extended' provisioning type in the module settings of the product.
Now, choose 'Country' that you will offer your Office 365 services from.
|To allow your clients to purchase multiple licenses at a single order, you must create configurable options for a product .|
Start by going to 'Setup' → 'Products/Services' → 'Configurable Options' and press the 'Create a New Group' button.
|Enter a group name for the addon and select products that you want to offer this option for. Then press the 'Save Changes' option.|
|Now, press 'Add New Configurable Option' and a new popup window should open.|
|Name this configurable option as 'office365licenseQty' with the desired friendly name. Next, chose the 'Option Type' you want to use and add pricing for the desired quantity.|
Note: More information about setting up configurable options can be found here.
|Once the product configuration is complete, clients will be able to order the selected number of subscriptions.|
|After order your clients will be able to manage Office 365 users and subscriptions by themselves.|
The menu also displays information about the current number of used subscriptions.
| Before you start assigning subscriptions, you have to create new users.|
By default there is already one Office 365 user created based on the customer account.
|Fill in the required data to create a new user.|
|Then, after successfully creating a new user, you can view their account details.|
|In the user profile you can view account details as well as assigned subscriptions. |
Press the 'Add Subscriptions' button to assign a new license to this account.
|You can assign multiple licenses to one account, provided that the number of used subscriptions is not exceeded already.|
|After successfully adding licenses to user account you will see their number, status and validity in the user's 'Subscriptions' box.|
|The 'Subscriptions' section displays all product licenses that are currently assigned to a user.|
For your convenience, if product settings have been configured to create only one Office 365 customer per WHMCS client, then all other purchased subscription types will also be displayed here.
|If you are using the module, we do not recommend assigning subscription directly from the Microsoft panel.|
However, if such a situation occurrs, the subscription will be fetched to the WHMCS list, but then you will have to assign it to the user manually.
|In the newly opened window select the user to whom the subscription will be assigned and press the 'Assign' button.|
|Let's check your new product in the product page in admin area . After a successful creation, it should look exactly like presented on the screen below.|
Note The admin area for both standard and extended provisioning types looks basically the same.
|The 'Username' and 'Password' are used to sign up to the Office 365 panel.|
The 'User ID' , 'Order ID' , 'Customer ID' and 'Subscription ID' are custom fields used to connect the product with the created subscription in your Microsoft Partner Center.
|Due to API limitations, ordered subscriptions can only be suspended or unsuspended. For this reason, the 'Terminate' command will work in the same way as the 'Suspend' option.|
In case of standard product suspension, all addons that belong to the product will also be suspended. If the product is unsuspended, its addons will remain suspended.
The 'Change Password' option will change the password for all services assigned to the user. To change it into a new one, you need to:
|Note that the password must also meet the following requirements:
|By using upgrade/downgrade feature you can change the subscription type for the standard provisioning type.|
However, for the extended provisioning type you can only change the number of assigned licenses by configurable options, not the subscription type itself.
|Information about addons will depend on their status and will be shown in the 'Admin Notes' field. By default, the 'Subscription ID' service should be provided.|
Note that the addon can only be used for the standard provisioning type.
|For example, if the addon is suspended, the information will also appear in this field.|
|1. For more information on how the Microsoft Partner program works, check here.|
|2. API responses can be translated in the module's language file. To do this, add a new record in the file with the received API message and your translation.|
See below to find an exemplary entry:
$_LANG['ApiResponse']['Can\'t contain username paramName: User.Password, paramValue: , objectType: System.String'] = 'Password field cannot contain a username.';
|An essential guidance through the process of updating the module is offered here.|
Keep in mind there is a quick and easy option in our client area that will let you upgrade the license of your module to an open source version at any time - and at a lower price!
| While using the 2.X version of our module, note that no data can be migrated from the Office 365 For WHMCS version 1.0.0, so the module needs to be configured from scratch.|
This also means that previously placed orders for subscriptions will not work on the new version, even after module reconfiguration.
|1. When you have problems with connection, make sure that SELinux or firewall does not block ports.|
|2. The list of users and their subscriptions assigned to the customer directly in the Microsoft panel are not automatically assign to the WHMCS client and their users.|
This is due to the API limitations, so this list is only kept locally on the WHMCS server.
|3. This error encountered in the module:|
Use limit is exceeded for Offer Id
indicates that a single customer may purchase only one license (e.g. Office 365 Business, Office 365 Business Essentials, Office 365 Business Premium license).