Office 365 For WHMCS
(→Common Problems) |
(→Upgrade Guide) |
||
(56 intermediate revisions by 6 users not shown) | |||
Line 16: | Line 16: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ | + | |style="padding: 0px 0px 0px 30px;"|✔ Choose Billing Cycle And Term Duration |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ | + | |style="padding: 0px 0px 0px 30px;"|✔ Enable/Disable User Management |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Create Office 365 | + | |style="padding: 0px 0px 0px 30px;"|✔ Create Office 365 Customer During First Or Every Order |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ | + | |style="padding: 0px 0px 0px 30px;"|✔ Create Office 365 Client With Every Order |
|} | |} | ||
{| | {| | ||
Line 31: | Line 31: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 0px 30px;"|✔ Change Password |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 30px;"|✔ Accept Microsoft Customer Agreement | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 30px;"|✔ View Debug Information | ||
|} | |} | ||
*'''Client Area Features:''' | *'''Client Area Features:''' | ||
{| | {| | ||
− | |style="padding: 10px 0px 0px 30px;"|✔ Standard Provisioning Type: | + | |style="padding: 10px 0px 0px 30px;"|✔ View And Accept Microsoft Customer Agreement |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 30px;"|✔ Provide Custom User Domain | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 30px;"|✔ Standard Provisioning Type: | ||
|} | |} | ||
{| | {| | ||
Line 47: | Line 59: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ Order Chosen Number Of | + | |style="padding: 0px 0px 0px 45px;"|✔ Order Chosen Number Of Licenses |
|} | |} | ||
{| | {| | ||
Line 56: | Line 68: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ | + | |style="padding: 0px 0px 0px 45px;"|✔ Upgrade/Downgrade Number Of Office 365 Subscriptions |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px | + | |style="padding: 0px 0px 0px 30px;"|✔ Change Password |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 10px 30px;"|✔ | + | |style="padding: 0px 0px 10px 30px;"|✔ Go To Office 365 Panel |
|} | |} | ||
*'''Supported Services:''' | *'''Supported Services:''' | ||
{| | {| | ||
− | |style="padding: 10px 0px 0px 30px;"|✔ Office 365 | + | |style="padding: 10px 0px 0px 30px;"|✔ Office 365 A1/A3/A5/E1/E3/E5/F3 |
|} | |} | ||
{| | {| | ||
Line 72: | Line 84: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Office 365 ProPlus/Enterprise E1/E3/E5/ | + | |style="padding: 0px 0px 0px 30px;"|✔ Office 365 Data Loss Prevention |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 30px;"|✔ Office 365 Education/Education E5 | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 30px;"|✔ Office 365 ProPlus/Enterprise E1/E3/E5/F1 | ||
|} | |} | ||
{| | {| | ||
|style="padding: 0px 0px 0px 30px;"|✔ Standalone Services: | |style="padding: 0px 0px 0px 30px;"|✔ Standalone Services: | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Advanced Communications | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Advanced eDiscovery Storage | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ AI Builder Capacity | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Azure Active Directory | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Azure Information Protection Premium | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Business Apps | ||
|} | |} | ||
{| | {| | ||
Line 81: | Line 117: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ Exchange Online | + | |style="padding: 0px 0px 0px 45px;"|✔ Chat Session For Virtual Agent |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Common Area Phone | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Common Data Services | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Dynamics 365 Services | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ e-Commerce Tiers | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Enterprise Mobility + Security | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Exchange Online Plans, Archiving, And Services | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Extra Graph Connector Capacity | ||
|} | |} | ||
{| | {| | ||
Line 87: | Line 144: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ | + | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 A1/A3/A5/E3/E5/F1/F3 |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Apps | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Audio Conferencing | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Business | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Calling Plan | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Compliance | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Domestic | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Security | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft 365 Phone System | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Cloud App Security | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Defender | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Intune | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft MyAnalytics | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Stream Plan | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Stream Storage Add-On | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Microsoft Teams | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Minecraft: Education Edition | ||
|} | |} | ||
{| | {| | ||
Line 93: | Line 198: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ Online | + | |style="padding: 0px 0px 0px 45px;"|✔ Power Apps |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Power Automate | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Power BI Premium EM3/P1/P2/P3/P4/P5 | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Power BI Pro | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Power Virtual Agent | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Pro Direct Support for Dynamics 365 Unified Operations | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Project Online Essentials | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Project Plan 1/3/5 | ||
|} | |} | ||
{| | {| | ||
Line 99: | Line 225: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ SharePoint | + | |style="padding: 0px 0px 0px 45px;"|✔ SharePoint |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 45px;"|✔ Skype For Business | + | |style="padding: 0px 0px 0px 45px;"|✔ Skype For Business Plus |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 0px 45px;"|✔ Teams Rooms Premium |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Visio Plan 1/2 | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Windows 10 Enterprise A3/A5/E3/E5 | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 0px 45px;"|✔ Yammer | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 45px;"|✔ And Others Based On Availability In Microsoft Offer | ||
|} | |} | ||
*'''General Info:''' | *'''General Info:''' | ||
Line 112: | Line 250: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Requires Microsoft Cloud Solution Provider - Direct (Tier 1) | + | |style="padding: 0px 0px 0px 30px;"|✔ Requires Microsoft Cloud Solution Provider - Direct Bill Partner (Tier 1) |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Supports PHP | + | |style="padding: 0px 0px 0px 30px;"|✔ Supports PHP 8.1 Back To PHP 7.3 |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Supports WHMCS | + | |style="padding: 0px 0px 0px 30px;"|✔ Supports WHMCS Themes "Six" And "Twenty-One" |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 0px 30px;"|✔ Supports WHMCS | + | |style="padding: 0px 0px 0px 30px;"|✔ Supports WHMCS V8.8 Back To WHMCS V8.3 |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 30px 30px;"|✔ Easy Module Upgrade To [https://www.modulesgarden.com/products/whmcs/office-365#open-source-version Open Source Version] | + | |style="padding: 0px 0px 0px 30px;"|✔ Requires ionCube Loader V12 Or Later |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 30px;"|✔ Easy [https://www.docs.modulesgarden.com/How_To_Upgrade_WHMCS_Module Module Upgrade] To [https://www.modulesgarden.com/products/whmcs/office-365#open-source-version Open Source Version] | ||
|} | |} | ||
=Installation= | =Installation= | ||
− | <h4 style="color: #ff0000; font-weight:bold; text-align:center;">Please be informed that Office 365 For WHMCS 2. | + | <!-- |
+ | <h4 style="color: #ff0000; font-weight:bold; text-align:center;">Please be informed that Office 365 For WHMCS 2.X is not compatible with its 1.0 version due to the changes introduced to the creation process of subscriptions and users.<br/> | ||
If the mechanism available in the 1.0 version suits your requirements, do not update your module to the latest version.</h4> | If the mechanism available in the 1.0 version suits your requirements, do not update your module to the latest version.</h4> | ||
− | + | --> | |
− | + | ||
{| | {| | ||
− | |style="padding: 10px 0px | + | |style="padding: 10px 0px 15px 0px;"|'''This tutorial will show you how to successfully install and authenticate [https://www.modulesgarden.com/products/whmcs/office-365 Office 365 For WHMCS.]'''<br /> |
We will guide you step by step through the whole installation and configuration process.<br /> | We will guide you step by step through the whole installation and configuration process.<br /> | ||
− | |||
− | |||
− | |||
|} | |} | ||
{| | {| | ||
− | |style="padding: | + | |style="padding: 0px 0px 15px 0px;"|'' '''Important:''' This module configuration requires a [https://partner.microsoft.com/ Microsoft Partner Network] account with [https://docs.microsoft.com/en-us/partner-center/direct-partner-new-requirements '''CSP Direct Bill Partner (Tier 1)'''].'' |
+ | |} | ||
+ | {| | ||
+ | <!--'' '''Note:''' If you still use Office 365 For WHMCS version '''1.0.0''', [https://www.docs.modulesgarden.com/Office_365_1.0.0_For_WHMCS read about it here].''--> | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|'''1. Log in to our client area and download the module.''' | ||
|} | |} | ||
{| | {| | ||
Line 146: | Line 290: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 10px 15px;"|'''2. In the downloaded file you | + | |style="padding: 0px 0px 10px 15px;"|'''2. In the downloaded file you might find one or two packages that support different PHP versions.'''<br/> |
− | '' '''Note''' | + | In the most recent versions of the module, you will find only one package that supports PHP 7.2 and later.<br/> <!-- If you need a package for the previous versions of PHP, please [https://www.modulesgarden.com/support/ticket/general-support contact our support]. --> |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:PHP72_74.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|'''Previous updates of the module may contain two packages dedicated to various PHP versions.'''<br/> | ||
+ | The first one that supports PHP 5.6 up to PHP 7.1, and the second one addressed to PHP 7.2 up to PHP 7.4.<br/> | ||
+ | '''''Note:''' Keep in mind that PHP versions 5.6 up to 7.1 are no longer officially supported and their security issues are not fixed or released any more. Find more info [http://php.net/supported-versions.php here].'' | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:PHP56_74.png]] | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 10px 15px;"|<!-- '' '''Important''': This situation does not affect [https://www.modulesgarden.com/products/whmcs/office-365#open-source-version '''the open source version'''] of this module which can be applied to any PHP from version 5.6 and later.''<br/>'' --> '''Note''': You can check the current PHP version in your WHMCS. To do so, proceed to ''' 'Utilities' → 'System' → 'PHP Info'.''' |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"|'''3. Extract the | + | |style="padding: 0px 0px 15px 15px;"|'''3. Extract the package and upload its content into the main WHMCS directory. |
− | The content of | + | The content of the package to upload should look like this. |
|} | |} | ||
{| | {| | ||
Line 174: | Line 329: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: | + | |style="padding: 0px 0px 15px 15px;"|'''6. Now, set up the '' 'storage' '' folder as recursively writable.'''<br /> |
This folder is located in '' 'your_whmcs/modules/servers/office365'. | This folder is located in '' 'your_whmcs/modules/servers/office365'. | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 20px 25px;"|[[File:O2_5.png]] |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|'''7. There are two cron commands that should be performed.''' | ||
+ | *To create a customer, user and make an order (recommended 5 minute intervals):<br/> | ||
+ | <pre> php -q /your_whmcs/modules/servers/office365/cron/cron.php queue </pre> | ||
+ | *To update the API token (recommended once a day): | ||
+ | <pre> php -q /your_whmcs/modules/servers/office365/cron/cron.php token:refresh </pre> | ||
+ | |} | ||
+ | ==Obtaining API Details== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 30px 15px;"|Before you start to [[#Configuration_of_Server|configure the server]], you need to obtain some neccessary data to connect to API.<br/> | ||
+ | The data you need: | ||
+ | * '''APP ID''' | ||
+ | * '''APP Secret''' | ||
+ | * '''Common Name / Tenant ID''' | ||
+ | * '''Key Vault APP ID''' | ||
+ | * '''Key Vault Secret ID''' | ||
+ | * '''Key Vault Directory ID''' | ||
+ | * '''Key Vault Domain''' | ||
+ | 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.<br/> The process of obtaining the data needs to be carried out on your Microfost account (or accounts) on your own.<br/> Please keep in mind that since the date of this publication, some changes to the interface or the process of getting the neccessary data from Microsoft may have occured. <br/> Therefore, the steps and screens presented below may not always be accurate and refect the actual starte of affairs.<br/> If any inaccuracies are found, try to adjust to them as much as possible, or contact our [https://www.modulesgarden.com/support support] for assistance.'' | ||
+ | |} | ||
+ | |||
+ | ===Creating Application in Microsoft Azure=== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|The first step is to create an application in your Azure Active Directory if you do not have it yet.<br/> | ||
+ | Log in to your panel in [https://portal.azure.com/ Microsoft Azure.]<br/> | ||
+ | Then, expand the left sidebar and select '' 'Azure Active Directory' '' from the menu. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_1.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|On the newly opened page, choose '' 'App registrations' '' from the left menu, and then click on '' 'New registration' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_2.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Enter an application name on the newly opened page. Leave the selected by default 'Supported account types' unchanged .<br/> | ||
+ | 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:<br/> | ||
+ | https://my-whmcs.com/modules/servers/office365/auth.php | ||
+ | Please make sure that it is correct and reachable from outside - your WHMCS server must accept SSL connections. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_3.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|After clicking on the '' 'Register' '' button, you will be redirected to the page that generated your application data. | ||
+ | <div id="app1_details"></div> | ||
+ | There you will find: | ||
+ | * '''Application (client) ID''' | ||
+ | * '''Directory (tenant) ID''' | ||
+ | '''Copy it and keep safe''', as you will need it afterwards to configure the server in WHMCS. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_4.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Next, go to the '' 'Certificates & secrets' '' tab from the side menu and click on '' 'New client secret' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_5.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Before adding, provide it with a description and set 'Never' in the 'Expires' option. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_6.png]] | ||
+ | |} | ||
+ | {| | ||
+ | <div id="app1_secret"></div> | ||
+ | |style="padding: 0px 0px 15px 15px;"|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.<br/> | ||
+ | '' '''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!'' | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_7.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Now, you need to set appropriate permissions. To do so, move to the '' 'API permissions' '' tab and click on '' 'Add a permission' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_8.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Choose '' 'APIs my organization uses' '' and then '' 'Microsoft Partner Center' '' from the list. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_9.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Tick the '' 'user_impersonation' '' permission and click on '' 'Add permissions' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_10.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|After adding permissions, click again on '' 'Add a permission' '' and then, from the '' 'Microsoft APIs' '' tab, choose '' 'Microsoft Graph' '' | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_11.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Select the '' 'Delegated pemissions' ''type as well as find and tick '' 'offline_access' '' on the list. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_12.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Moreover, on the same list, find and mark '' 'User.Read' '' and finally click on '' 'Add permissions' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_13.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Lastly, the scheme of allocated permissions should look as presented below.<br/> If it is correct, click on '' 'Grant admin consent for <your company name>' '' and confirm this action. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_14.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 25px;"|[[File:O2_API_15.png]] | ||
+ | |} | ||
+ | |||
+ | ===Creating Key Vault=== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|The final step in getting the data needed to connect to API is to generate Key Vault.<br/> | ||
+ | Azure Key Vault is a cloud service used to manage keys, secrets, and certificates.<br/> | ||
+ | It is required, so that the application and Office 365 For WHMCS that uses it, can operate properly.<br/> | ||
+ | |||
+ | 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.'' | ||
+ | |||
+ | <div id="app2_details"></div> | ||
+ | <div id="app2_secret"></div> | ||
+ | At the beginning, follow the same steps as when setting up the application in Microsoft Azure. That is: | ||
+ | # Go to '' 'App registrations' '' and create a new application using the '' 'New registration' '' button | ||
+ | # Provide it with a name, for example '' 'Application For Key Vault' '' and as previously, enter '' 'Redirect URI' '' which leads to the '' 'auth.php' '' file in your WHMCS | ||
+ | # After generating the application, copy its ''' '' 'Application (client) ID' '' ''' as well as ''' '' 'Directory (tenant) ID' '' ''' | ||
+ | # Then, in the '' 'Certificates & secrets' '' section, create ''' '' 'New client secret' '' ''' and '''do not forget''' to copy it after creating | ||
+ | # Move to the '' 'Api permissions' '' section | ||
+ | |||
+ | Here, the differences appear, because Application For Key Vault demands different permissions. This is: | ||
+ | |||
+ | * '''user_impersonation''' for '''Azure Key Vault''' | ||
+ | <!--* '''user_impersonation''' for '''ConnectionsService'''--> | ||
+ | |||
+ | As before, let's add permissions. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_16.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Select '' 'Azure Key Vault' '' from '' 'Microsoft APIs' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_17.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Next, tick '' 'user_impersonation' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_18.png]] | ||
+ | |} | ||
+ | <!-- | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Repeat the last step, find '' 'ConnectionsService' '' APIs my organization uses''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_19.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|The same as previously, tick permissions for '' 'user_impersonation' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_20.png]] | ||
+ | |} | ||
+ | --> | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|After adding permissions, you should see the same result as below. <br/> | ||
+ | Finally, do not forget to click on '' 'Grant admin consent for <your company name>' ''. <br/> | ||
+ | |||
+ | '' '''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.<br/> However, while testing and in test environments, we encountered problems, that is why we recommend using two separate applications. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_21.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|Now, move to the '' 'Key Vaults' ''section. The fastest way is to use the search engine. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_22.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|If you do not have Key Vault yet, you can create it here by following the on-screen instructions. <br/> Add a name, subscription, region, pricing tier and other targets.<br/>More info about creating and using Azure Key Vault, can be found [https://docs.microsoft.com/en-us/azure/key-vault/ here].<br/> | ||
+ | |||
+ | If you already have Key Vault generated, select it from the list. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_23.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Before you gather all required data, you need to give appropriate permissions in your Key Vault to the previously created application. <br/>To do so, proceed to the '' 'Access policies' '' section in your Key Vault and click '' 'Add Access Policy' ''.<br/> | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_23_1.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Next, from the '' 'Secret permissions' '' dropdown, select the following permissions in the '' 'Secret Management Operations' '' part: | ||
+ | *Get | ||
+ | *List | ||
+ | *Set | ||
+ | *Delete | ||
+ | *Recover | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_23_2.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|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.<br/> | ||
+ | |||
+ | Finally, to confirm adding the access policy, click '' 'Add' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_23_3.png]] | ||
+ | |} | ||
+ | {| | ||
+ | <div id="keyvault"></div> | ||
+ | |style="padding: 0px 0px 15px 15px;"|Finally, go to the '' 'Overview' '' section and write down the generated: | ||
+ | * '''DNS Name''' - but without the'' 'https://' '' part | ||
+ | * '''Directory ID''' | ||
+ | which are needed to configure the server in WHMCS properly. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 25px;"|[[File:O2_API_24.png]] | ||
+ | |} | ||
+ | |||
+ | ===Registration of Application in Microsoft Partner Center=== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|Lastly, once two applications in Microsoft Azure and Key Vault are ready, you need to register the first created application in Microsoft Partner Center.<br/> | ||
+ | |||
+ | Log in to the dashboard of [https://partner.microsoft.com/en-us/dashboard/directory Partner Center], and then go to'' 'Partner Settings' '' from the dropdown menu in the top right corner.<br/> | ||
+ | |||
+ | '' '''Note:''' To log in, use the account where the first application was created.'' | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_25.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|From the '' 'Account Settings' '' submenu, choose'' 'App Management' '', and for the '' 'Web App' '' type, click on '' 'Register Existing App' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_26.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 15px;"|On the list, find the first created application in Microsoft Azure in the previous steps of this manual and click '' 'Register your app' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_API_27.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 15px;"|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. | ||
|} | |} | ||
Line 184: | Line 603: | ||
{| | {| | ||
|style="padding: 10px 0px 15px 15px;"|'''7. To begin, you must add a new server.'''<br /> | |style="padding: 10px 0px 15px 15px;"|'''7. To begin, you must add a new server.'''<br /> | ||
− | Go to '' ' | + | Go to '' 'System Settings' '' → '' 'Servers' '' and press '' 'Add New Server'. ''<br/> |
+ | |||
+ | '' '''Note:''' If you have WHMCS V8.x.x, we recommend using your ''' 'previous experience' ''' of the server configuration instead of the new wizard tool.'' | ||
|} | |} | ||
{| | {| | ||
Line 190: | Line 611: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"|'''8. | + | |style="padding: 0px 0px 15px 15px;"|'''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 providing any hostname or IP address details.<br/>In this case, try to provide anything in the hostname field. Please note that this is a bug occurring in WHMCS, not the module itself, and it may also occur in further versions of WHMCS.'' | |
+ | |||
+ | Next, choose '' 'Office365' '' from the dropdown menu.<br/> | ||
+ | |||
+ | The'' 'Username' '' and '' 'Password' '' fields should be felt empty- they are not used by the module.<br/> | ||
+ | |||
+ | Now, fill in the previously [[#Obtaining_API_Details|obtained API data]]. They are as follows: | ||
+ | |||
+ | * '''APP ID''' - is the '''Application (client) ID''' <u>of the first</u> application that you created [[#app1_details| here]] | ||
+ | * '''APP Secret''' - stands for the '''Client secret''' <u>from the first</u> application which was generated [[#app1_secret| here]] | ||
+ | * '''Common Name / Tenant ID''' - is the '''Directory (tenant) ID''' <u>of the first</u> created application [[#app1_details| here]] | ||
+ | * '''Key Vault APP ID''' - stands for the '''Application (client) ID''' <u>of the second</u> application that you formed[[#app2_details| here]] | ||
+ | * '''Key Vault Secret ID''' - is the '''Client secret''' <u>from the second</u> application that was established [[#app2_secret| here]] | ||
+ | * '''Key Vault Directory ID''' - is the '''Directory ID''' from <u>Key Vault</u> that you might have received [[#keyvault| here]] | ||
+ | * '''Key Vault Domain''' - is the '''DNS Name''' from <u>Key Vault</u> (but '''without''' the '''https://''' part) that you may have got [[#keyvault| here]] | ||
+ | After completing the data, remember to ''' '' 'Save Changes' '' '''. <br/> | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 20px 25px;"|[[File: | + | |style="padding: 0px 0px 20px 25px;"|[[File:O2_8_1.png]] |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"| | + | |style="padding: 0px 0px 15px 15px;"|You will be redirected to your Microsoft account for a moment.<br/> |
− | + | Use the same data as for the Azure account, on which you generated <u>the first</u> application.<br/> | |
+ | Finally, you will be asked to grant access to your account - '''agree'''. <br/> | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 20px 25px;"|[[File: | + | |style="padding: 0px 0px 20px 25px;"|[[File:O2_9_login.png]] |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | {| |
+ | |style="padding: 0px 0px 15px 15px;"| If everything proceeded correctly, you will be redirected to your WHMCS again.<br/> | ||
+ | Now, you can run the test connection of your server to make sure that all data is proper. | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 20px 25px;"|[[File: | + | |style="padding: 0px 0px 20px 25px;"|[[File:O2_9.png]] |
|} | |} | ||
{| | {| | ||
Line 257: | Line 696: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 20px 15px;"| '''16. Then, go to the '' 'Custom Fields' '' tab and make sure that it displays the | + | |style="padding: 0px 0px 20px 15px;"| '''16. Then, go to the '' 'Custom Fields' '' tab and make sure that it displays the four created '' 'text box' '' custom fields.'''<br/> |
− | These are: '''userid|User ID''', ''' orderid|Order ID ''' | + | These are: '''userid|User ID''', ''' orderid|Order ID ''', ''' customerid|Customer ID''', '''acceptAgreement|Accept Agreement''' and '''office365SubscriptionId|Office365 Subscription ID.'''<br /> If they were not automatically created, then add them manually as shown on the following screen.<br/> Please note that '''userDomain|User Domain''' custom field can be also applied to create an account instead of using the default WHMCS '' 'Domain' '' field. |
|} | |} | ||
{| | {| | ||
Line 268: | Line 707: | ||
|style="padding: 10px 0px 30px 0px;"|Configuration and management of Office 365 For WHMCS is very intuitive. <br/> | |style="padding: 10px 0px 30px 0px;"|Configuration and management of Office 365 For WHMCS is very intuitive. <br/> | ||
Before you start, please note that there are two provisioning types you can offer to your clients. | Before you start, please note that there are two provisioning types you can offer to your clients. | ||
− | * '''Standard''' - this will automatically create for your WHMCS client the new Office 365 customer with user and subscription based on the chosen module settings. | + | * '''Standard''' - this will automatically create for your WHMCS client the new Office 365 customer with user and subscription based on the chosen module settings.<br/> You can also enable/disable the '' 'User Management' '' option in the client area. |
− | * '''Extended''' - this | + | * '''Extended''' - this type has two available options: |
+ | ** ''' '' 'With first order' '' '''- the Office 365 customer is generated only once when the first order is placed.<br/> Next time, when the same WHMCS client makes another order, then it will be assigned to the same Office 365 customer that was created along with the first order. | ||
+ | ** ''' '' 'With every order' '' '''- creates the Office 365 customer every time the order is placed so there are as many Office 365 customers as orders. <br/> | ||
+ | '''Note''' that with '' 'Extended Provisioning Type' '', it will be also up to the WHMCS client to choose how many licenses to buy during an order.<br/> | ||
|} | |} | ||
==Standard Provisioning Type== | ==Standard Provisioning Type== | ||
Line 280: | Line 722: | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"| | |style="padding: 0px 0px 15px 15px;"| | ||
− | Now, choose '' 'Country' | + | Now, choose '' 'Country' '' that you will offer your Office 365 services from.<br /> |
− | + | With the ''Standard Provisioning Type'' the user is created automatically.<br /> | |
− | + | Moreover, you are allowed to select the '' 'Agreement Type' '' if there are more than one available and decide if your client will be able to manage the product.<br /> | |
+ | There are also a few types of '' 'Billing Cycle' '' that can be modified according to your preferences.<br /> | ||
You may also assign additional services to the main plan as addons - they will be described in further parts of this documentation.<br/> | You may also assign additional services to the main plan as addons - they will be described in further parts of this documentation.<br/> | ||
Line 291: | Line 734: | ||
|} | |} | ||
+ | <!-- | ||
===Additional Services=== | ===Additional Services=== | ||
{| | {| | ||
Line 330: | Line 774: | ||
|style="padding: 0px 0px 30px 15px;"|Finally, '' 'Save Changes' ''. Remember that you can also add more addons for services. | |style="padding: 0px 0px 30px 15px;"|Finally, '' 'Save Changes' ''. Remember that you can also add more addons for services. | ||
|} | |} | ||
+ | --> | ||
===Client Area=== | ===Client Area=== | ||
{| | {| | ||
− | |style="padding: 10px 0px 20px 15px;"|Once the product configuration is complete, clients will be able to order the selected subscription and addons. | + | |style="padding: 10px 0px 20px 15px;"|Once the product configuration is complete, clients will be able to order the selected subscription and addons.<br /> Moreover, clients have to accept the required agreement which was set in the product configuration. |
|} | |} | ||
{| | {| | ||
Line 340: | Line 785: | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"| | |style="padding: 0px 0px 15px 15px;"| | ||
− | + | The customer can order additional services to their subscription, change their password to the [https://www.office.com Office 365] panel, upgrade a subscription plan or request. <br />If you enable the '' 'User Management' '' option in the product configuration section, then clients will be able to add/delete users, check more information about users as well as assign one license to one user. <br /> There is also a possibility to automatically redirect to the Office 365 panel once pressing the the proper button. | |
− | The customer can order additional services to their subscription, change their password to the [https://www.office.com Office 365] panel, upgrade a subscription plan or request a | + | |
|} | |} | ||
{| | {| | ||
Line 349: | Line 793: | ||
==Extended Provisioning Type== | ==Extended Provisioning Type== | ||
{| | {| | ||
− | |style="padding: 10px 0px 15px 15px;"| | + | |style="padding: 10px 0px 15px 15px;"|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.<br/> |
Enable this configuration type by choosing the '' 'Extended' '' provisioning type in the module settings of the product. | Enable this configuration type by choosing the '' 'Extended' '' provisioning type in the module settings of the product. | ||
|} | |} | ||
Line 358: | Line 802: | ||
|style="padding: 0px 0px 15px 15px;"| | |style="padding: 0px 0px 15px 15px;"| | ||
Now, choose '' 'Country''' that you will offer your Office 365 services from.<br /> | Now, choose '' 'Country''' that you will offer your Office 365 services from.<br /> | ||
− | + | Similarly as previously, select the '' 'Company Domain' '' and '' 'Agreement Type' '' if there are more than one available and choose one of the desired Office 365 plan.<br /> | |
− | Next, decide | + | There are also a few types of '' 'Billing Cycle' '' that can be modified according to your preferences.<br /> |
− | Note that for this mode you | + | In this type of provisioning, the '' 'User Management' '' option is enabled by default. |
+ | Next, decide which type of generating customers is acceptable for you. There are two possibilities: | ||
+ | * ''' '' 'With the first order' '' '''- the Office 365 customer is generated only once when the first order is placed. | ||
+ | * ''' '' 'With every order' '' '''- creates the Office 365 customer every time the order is placed so there are as many Office 365 customers as orders. <br/> | ||
+ | <!--'''Note that for this mode you cannot assign any additional services to the main plan as addons.'''--> | ||
|} | |} | ||
{| | {| | ||
Line 396: | Line 844: | ||
===Client Area=== | ===Client Area=== | ||
{| | {| | ||
− | |style="padding: 10px 0px 20px 15px;"|Once the product configuration is complete, clients will be able to order the selected number of | + | |style="padding: 10px 0px 20px 15px;"|Once the product configuration is complete, clients will be able to order the selected number of licenses. |
|} | |} | ||
{| | {| | ||
Line 402: | Line 850: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"|After order your clients will be able to manage Office 365 users and subscriptions by themselves.<br/> | + | |style="padding: 0px 0px 15px 15px;"|After order your clients will be able to manage Office 365 users, addons, and subscriptions by themselves.<br/> |
− | The menu also displays information about the | + | The menu also displays information about the number of ordered and unassigned licenses. |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 30px 25px;"|[[File:O2_44.png]] |
|} | |} | ||
+ | ====Users==== | ||
{| | {| | ||
− | |style="padding: 0px | + | |style="padding: 10px 0px 20px 15px;"| Before you start assigning licenses, you have to create a new user. By default there is already one Office 365 user created based on the customer account.<br/> Your can add more users and then assign to them the purchased licenses. |
− | By default there is already one Office 365 user created based on the customer account.<br/> | + | |
− | Your can add more users and then assign to them the purchased | + | |
|} | |} | ||
{| | {| | ||
Line 430: | Line 877: | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"|In the user profile you can view account details as well as assigned subscriptions. <br/> | |style="padding: 0px 0px 15px 15px;"|In the user profile you can view account details as well as assigned subscriptions. <br/> | ||
− | Press the '' ' | + | Press the '' 'Assign License' '' button to assign a new license to this account. |
|} | |} | ||
{| | {| | ||
Line 436: | Line 883: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"|You can assign | + | |style="padding: 0px 0px 15px 15px;"|You can assign one license to one user, provided that the number of used subscriptions is not exceeded already. |
|} | |} | ||
{| | {| | ||
|style="padding: 0px 0px 20px 25px;"|[[File:O2_49.png]] | |style="padding: 0px 0px 20px 25px;"|[[File:O2_49.png]] | ||
|} | |} | ||
+ | <!-- | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"|After successfully adding licenses to user account you will see their number, status and validity in the user's '' 'Subscriptions' '' box. | |style="padding: 0px 0px 15px 15px;"|After successfully adding licenses to user account you will see their number, status and validity in the user's '' 'Subscriptions' '' box. | ||
Line 448: | Line 896: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px 15px 15px;"|The '' 'Subscriptions' '' section displays | + | |style="padding: 0px 0px 15px 15px;"|In the '' 'User Details' '' section, there is also the possibility to assign an addon here. To do so, click '' 'Assign Addon' ''. |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_50_1.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Now, select the proper addon from the dropdown menu and press '' 'Confirm' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_50_2.png]] | ||
+ | |} | ||
+ | --> | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|Once the action is completed, you will see assigned licenses on the list.<br/> If you want to unassign a license, simply click on the '' 'Delete' '' button. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 25px;"|[[File:O2_50_3.png]] | ||
+ | |} | ||
+ | |||
+ | ====Subscriptions==== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|The '' 'Subscriptions' '' section displays the number of ordered licenses.<br/> <!-- | ||
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.<br/> | 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.<br/> | ||
− | Nevertheless, please note that the subscriptions counter will display usage for the currently chosen product only . | + | Nevertheless, please note that the subscriptions counter will display usage for the currently chosen product only .--> |
|} | |} | ||
{| | {| | ||
|style="padding: 0px 0px 30px 25px;"|[[File:O2_51.png]] | |style="padding: 0px 0px 30px 25px;"|[[File:O2_51.png]] | ||
|} | |} | ||
+ | <!-- | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"|If you are using the module, we do not recommend assigning subscription directly from the Microsoft panel.<br/> | |style="padding: 0px 0px 15px 15px;"|If you are using the module, we do not recommend assigning subscription directly from the Microsoft panel.<br/> | ||
− | However, if such a situation | + | However, if such a situation occurs, the subscription will be fetched to the WHMCS list, but then you will have to assign it to the user manually. |
|} | |} | ||
{| | {| | ||
Line 468: | Line 938: | ||
|style="padding: 0px 0px 30px 25px;"|[[File:O2_53.png]] | |style="padding: 0px 0px 30px 25px;"|[[File:O2_53.png]] | ||
|} | |} | ||
+ | --> | ||
+ | <!-- | ||
+ | ====Addons==== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 20px 15px;"|The '' 'Addons' '' section presents you a number of addons that were purchased. <br/> '''Note:''' ''Please remember that the 'Quantity' field shows a number of addons that were already ordered, '''not''' a number of addons that are available to users. '' | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 25px;"|[[File:O2_53_1.png]] | ||
+ | |} | ||
+ | --> | ||
==Admin Area== | ==Admin Area== | ||
{| | {| | ||
− | |style="padding: 10px 0px 20px 15px;"|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.<br/> | + | |style="padding: 10px 0px 20px 15px;"|Let's check your new product in the product page in the admin area. |
+ | In order to create a customer, user and make an order, the cron job is required as described [[#Installation|in point 7 of this section]].<br/> | ||
+ | After a successful creation, it should look exactly like presented on the screen below.<br/> | ||
'' '''Note''' The admin area for both '''standard''' and '''extended''' provisioning types looks basically the same. | '' '''Note''' The admin area for both '''standard''' and '''extended''' provisioning types looks basically the same. | ||
|} | |} | ||
Line 500: | Line 982: | ||
{| | {| | ||
|style="padding: 0px 0px 15px 15px;"| | |style="padding: 0px 0px 15px 15px;"| | ||
− | 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.<br /> | + | <!--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.<br />--> |
− | + | In case of '''extended''' product suspension, all subscriptions assigned to the customer and their users are suspended as well.<br /> | |
Information about product suspension will be shown in the '' 'Admin Notes' '' field. | Information about product suspension will be shown in the '' 'Admin Notes' '' field. | ||
|} | |} | ||
Line 534: | Line 1,016: | ||
|} | |} | ||
+ | <!-- | ||
====Addons==== | ====Addons==== | ||
{| | {| | ||
Line 547: | Line 1,030: | ||
{| | {| | ||
|style="padding: 0px 0px 30px 25px;"|[[File:O2_29.png]] | |style="padding: 0px 0px 30px 25px;"|[[File:O2_29.png]] | ||
+ | |} | ||
+ | --> | ||
+ | |||
+ | ==Importing Existing Customers== | ||
+ | {| | ||
+ | |style="padding: 10px 0px 15px 15px;"|If you want to import the existing customers, you need to take the following steps. <br/> | ||
+ | 1. Firstly, manually create an order for your customer in WHMCS. Choose a client, and in the summary view click on the '' ' Add New Order' '' button. Next, select a '' 'Product/Service' '' and press '' 'Submit Order' ''. <br/> '''What is important, do not perform the '' 'Create' '' action.''' The status has to remain as '' 'Pending' ''. <br/> More info about placing orders can be found [https://docs.whmcs.com/Order_Management#Placing_an_Order here]<br/> | ||
+ | 2. Proceed to the newly created product's card in your admin area. Find the following empty fields: | ||
+ | *'''User ID''' | ||
+ | *'''Order ID''' | ||
+ | *'''Customer ID''' | ||
+ | *'''Subscription ID''' | ||
+ | The above-mentioned information has to be consistent with the data from your Microsoft panel. Now, complete these fields as presented below. <br/> '''Important!''' Remember to make sure that the format of the provided data is compatible with the format supported by the module. You can preview it for another product of the module you have already created and enter it in a similar way. <br/> If you completed the required data, now change the status from '' 'Pending' '' to '' 'Active' '' and '' 'Save Changes' ''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_import.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 15px 15px;"|3. If the service has been created, you have to change the '' 'Username' '' field in the admin area view. <br/> You have to provide the email address of the admin from the panel as '' 'Username' ''. '''The format of '' 'Username' '' should look like [email protected].''' <br/> '''Important!''' Remember to manually add other missing parameters of the instance such as domains, credentials, IP Addresses, configurable options, SSH Key, billing cycle, etc. so they match the parameters from the Microsoft panel. | ||
|} | |} | ||
=Tips= | =Tips= | ||
{| | {| | ||
− | |style="padding: 10px 0px 10px 15px;"|'''1. For more information on how the Microsoft Partner program works, | + | |style="padding: 10px 0px 10px 15px;"|'''1. For more information on how the Microsoft Partner program works, check [https://partner.microsoft.com/en-us/membership/how-it-works here].''' |
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 10px 15px;"|2. API responses can be translated in the module's [https://www.docs.modulesgarden.com/General#How_To_Change_WHMCS_Module_Language language file]. To do this, add a new record in the file with the received API message and your translation.<br /> 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.'; | $_LANG['ApiResponse']['Can\'t contain username paramName: User.Password, paramValue: , objectType: System.String'] = 'Password field cannot contain a username.'; | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 15px;"|3. Please remember that if the product belongs to the '' 'Standard Provisioning Type' '' then the '' 'Upgrade' '' action is not supported. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 15px;"|4. It is possible to use a different domain instead of ''' 'onmicrosoft.com' '''. <br/> '''Note:''' You cannot delete the ''' 'onmicrosoft.com' ''' domain. <br/> If you want to use another domain, please remember that it must be verified by Microsoft. For more info, refer to the following pages: | ||
+ | * Why there is the 'onmicrosoft.com' ending: [https://docs.microsoft.com/pl-pl/microsoft-365/admin/setup/domains-faq?view=o365-worldwide#why-do-i-have-an-onmicrosoftcom-domain here] | ||
+ | * How to add a domain to Microsoft: [https://docs.microsoft.com/pl-pl/microsoft-365/admin/setup/add-domain?view=o365-worldwide here] | ||
+ | Firstly, you need to add a new custom field '''userDomain|User Domain'''. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_53_2.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 15px;"|Once you add the custom field, your clients will be able to provide their '' 'User Domain' '' while placing orders. <br/> What is more, you can add a '' 'User Domain' '' manually here: | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_53_3.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 10px 15px;"|Navigate to the '' 'Users' '' section of the client area. From now, if you create a new user, you may decide which domain your users will use. <br/> '''Important!''' If a domain used in the 'userDomain' custom field '''is not validated by Microsoft''', you will receive the '' 'Domain validation failed' '' error while trying to use it here. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_53_4.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 15px;"|5. Please remember that when the '' 'Company Name' '' field is completed by a client (''Client Profile → Profile → Company Name''), it will be used by default when a Microsoft account is created. <br/> If the company name does not exist in the record, then '' 'First Name' '' and '' 'Last Name' '' will be used instead. | ||
|} | |} | ||
=Update Instructions= | =Update Instructions= | ||
{| | {| | ||
− | |style="padding: 10px 0px 30px 15px;"|An essential guidance through the process of updating the module is offered '''[https://www.docs.modulesgarden.com/How_To_Update_WHMCS_Module here]'''. | + | |style="padding: 10px 0px 30px 15px;"|An essential guidance through the process of updating the module is offered '''[https://www.docs.modulesgarden.com/How_To_Update_WHMCS_Module here]'''.<br/> |
− | + | ||
− | + | '''Important:''' If you update the module from any version prior to '''2.2.0''' up to 2.2.0 or higher, please remember that due to the changes in the product configuration,<br/> we highly recommend you review the settings and make changes if necessary. From version 2.2.0, to create a customer, user and make an order, the cron job is required as described [[#Installation|in point 7 of this section]]. | |
|} | |} | ||
==Migration== | ==Migration== | ||
{| | {| | ||
− | |style="padding: 10px 0px 30px 15px;"| While using the | + | |style="padding: 10px 0px 30px 15px;"| While using the 3.X version of our module, note that '''no data''' can be migrated from the Office 365 For WHMCS version 2.x.x, so the module '''needs to be configured from scratch'''.<br/> |
This also means that previously placed orders for subscriptions will '''not''' work on the new version, even after module reconfiguration. | This also means that previously placed orders for subscriptions will '''not''' work on the new version, even after module reconfiguration. | ||
+ | |} | ||
+ | =Upgrade Guide= | ||
+ | {| | ||
+ | |style="padding: 10px 0px 30px 15px;"|Seeking a solution that offers greater flexibility, customization tailored to your precise needs, and unrestricted availability?<br/> There is an option that not only proves to be cost-effective in the long run but also includes prioritized support services, making it a truly valuable investment.<br/> | ||
+ | |||
+ | Opt for the [https://www.modulesgarden.com/products/whmcs/office-365#open-source-version Open Source version] of your Office 365 For WHMCS module to unlock these benefits.<br/> Simply click on either the '''Get Source Code''' or '''Upgrade To Lifetime''' button found on the product's page in our client area to complete the one-step upgrade process, with a '''dedicated discount''' already applied.<br/> | ||
+ | |||
+ | Follow a [https://www.docs.modulesgarden.com/How_To_Upgrade_WHMCS_Module comprehensive guide] covering the transition process, the advantages it brings, and step-by-step instructions on what to do next after the order has been successfully finalized. | ||
|} | |} | ||
Line 579: | Line 1,116: | ||
|} | |} | ||
{| | {| | ||
− | |style="padding: 0px 0px | + | |style="padding: 0px 0px 5px 15px;"|'''3. This error encountered in the module:'''<br/> |
Use limit is exceeded for Offer Id | Use limit is exceeded for Offer Id | ||
− | indicates that a single customer may purchase only one license ''(Office 365 Business, Office 365 Business Essentials, Office 365 Business Premium license | + | indicates that a single customer may purchase only one license ''(e.g. Office 365 Business, Office 365 Business Essentials, Office 365 Business Premium license).'' |
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 5px 15px;"|4. If you come across the following error ''' "Organization registration id information is missing" ''' when creating a customer account, you need to add '''organizationNumber|Organization Registration Number''' custom field and then provide the INN number.<br/> | ||
+ | The error occurs for customer accounts located in these countries: Armenia(AM), Azerbaijan(AZ), Belarus(BY), Hungary(HU), Kazakhstan(KZ), Kyrgyzstan(KG), Moldova(MD), Russia(RU), Tajikistan(TJ), Uzbekistan(UZ), Ukraine(UA), India, Brazil, South Africa, <br/> Poland, United Arab Emirates, Saudi Arabia, Turkey, Thailand, Vietnam, Myanmar, Iraq, South Sudan and Venezuela. | ||
+ | For the customer’s company/organization located in other countries, this should not be specified. <br/> | ||
+ | |||
+ | Firstly, provide a new custom field. | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 20px 25px;"|[[File:O2_53_5.png]] | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 5px 15px;"| Now, place the customer’s organization registration number (also referred to as INN number in certain countries). | ||
+ | |} | ||
+ | {| | ||
+ | |style="padding: 0px 0px 30px 25px;"|[[File:O2_53_6.png]] | ||
|} | |} |
Revision as of 13:02, 19 April 2024
Contents |
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 |
✔ Choose Billing Cycle And Term Duration |
✔ Enable/Disable User Management |
✔ Create Office 365 Customer During First Or Every Order |
✔ Create Office 365 Client With Every Order |
✔ Change Package |
✔ Change Password |
✔ Accept Microsoft Customer Agreement |
✔ View Debug Information |
- Client Area Features:
✔ View And Accept Microsoft Customer Agreement |
✔ Provide Custom User Domain |
✔ Standard Provisioning Type: |
✔ Automatically Create Office 365 Customer/User/Subscription |
✔ Upgrade/Downgrade Office 365 Subscriptions |
✔ Extended Provisioning Type: |
✔ Order Chosen Number Of Licenses |
✔ View/Create/Delete Office 365 Users |
✔ Assign Available Subscriptions To Users |
✔ Upgrade/Downgrade Number Of Office 365 Subscriptions |
✔ Change Password |
✔ Go To Office 365 Panel |
- Supported Services:
✔ Office 365 A1/A3/A5/E1/E3/E5/F3 |
✔ Office 365 Business/Business Essentials/Business Premium |
✔ Office 365 Data Loss Prevention |
✔ Office 365 Education/Education E5 |
✔ Office 365 ProPlus/Enterprise E1/E3/E5/F1 |
✔ Standalone Services: |
✔ Advanced Communications |
✔ Advanced eDiscovery Storage |
✔ AI Builder Capacity |
✔ Azure Active Directory |
✔ Azure Information Protection Premium |
✔ Business Apps |
✔ Business Intelligence Service |
✔ Chat Session For Virtual Agent |
✔ Common Area Phone |
✔ Common Data Services |
✔ Dynamics 365 Services |
✔ e-Commerce Tiers |
✔ Enterprise Mobility + Security |
✔ Exchange Online Plans, Archiving, And Services |
✔ Extra Graph Connector Capacity |
✔ Information Rights Management |
✔ Microsoft 365 A1/A3/A5/E3/E5/F1/F3 |
✔ Microsoft 365 Apps |
✔ Microsoft 365 Audio Conferencing |
✔ Microsoft 365 Business |
✔ Microsoft 365 Calling Plan |
✔ Microsoft 365 Compliance |
✔ Microsoft 365 Domestic |
✔ Microsoft 365 Security |
✔ Microsoft 365 Phone System |
✔ Microsoft Cloud App Security |
✔ Microsoft Defender |
✔ Microsoft Intune |
✔ Microsoft MyAnalytics |
✔ Microsoft Stream Plan |
✔ Microsoft Stream Storage Add-On |
✔ Microsoft Teams |
✔ Minecraft: Education Edition |
✔ OneDrive For Business |
✔ Power Apps |
✔ Power Automate |
✔ Power BI Premium EM3/P1/P2/P3/P4/P5 |
✔ Power BI Pro |
✔ Power Virtual Agent |
✔ Pro Direct Support for Dynamics 365 Unified Operations |
✔ Project Online Essentials |
✔ Project Plan 1/3/5 |
✔ Project Portfolio Management |
✔ SharePoint |
✔ Skype For Business Plus |
✔ Teams Rooms Premium |
✔ Visio Plan 1/2 |
✔ Windows 10 Enterprise A3/A5/E3/E5 |
✔ Yammer |
✔ And Others Based On Availability In Microsoft Offer |
- General Info:
✔ Requires Microsoft Partner Network |
✔ Requires Microsoft Cloud Solution Provider - Direct Bill Partner (Tier 1) |
✔ Supports PHP 8.1 Back To PHP 7.3 |
✔ Supports WHMCS Themes "Six" And "Twenty-One" |
✔ Supports WHMCS V8.8 Back To WHMCS V8.3 |
✔ Requires ionCube Loader V12 Or Later |
✔ Easy Module Upgrade To Open Source Version |
Installation
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. |
Important: This module configuration requires a Microsoft Partner Network account with CSP Direct Bill Partner (Tier 1). |
1. Log in to our client area and download the module. |
2. In the downloaded file you might find one or two packages that support different PHP versions. In the most recent versions of the module, you will find only one package that supports PHP 7.2 and later. |
Previous updates of the module may contain two packages dedicated to various PHP versions. The first one that supports PHP 5.6 up to PHP 7.1, and the second one addressed to PHP 7.2 up to PHP 7.4. |
Note: You can check the current PHP version in your WHMCS. To do so, proceed to 'Utilities' → 'System' → 'PHP Info'. |
3. Extract the package and upload its content into the main WHMCS directory.
The content of the package to upload 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'. |
7. There are two cron commands that should be performed.
php -q /your_whmcs/modules/servers/office365/cron/cron.php queue
php -q /your_whmcs/modules/servers/office365/cron/cron.php token:refresh |
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: https://my-whmcs.com/modules/servers/office365/auth.php 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:
Copy it and keep safe, 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 'Expires' 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 'System Settings' → 'Servers' and press 'Add New Server'. Note: If you have WHMCS V8.x.x, 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 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 obtained 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 four created 'text box' custom fields. These are: userid|User ID, orderid|Order ID , customerid|Customer ID, acceptAgreement|Accept Agreement and office365SubscriptionId|Office365 Subscription ID. |
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.
Note that with 'Extended Provisioning Type' , it will be also up to the WHMCS client to choose how many licenses to buy during an order. |
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. |
Client Area
Once the product configuration is complete, clients will be able to order the selected subscription and addons. Moreover, clients have to accept the required agreement which was set in the product configuration. |
The customer can order additional services to their subscription, change their password to the Office 365 panel, upgrade a subscription plan or request. |
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.
|
Configurable Options
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. |
Client Area
Once the product configuration is complete, clients will be able to order the selected number of licenses. |
After order your clients will be able to manage Office 365 users, addons, and subscriptions by themselves. The menu also displays information about the number of ordered and unassigned licenses. |
Users
Before you start assigning licenses, you have to create a new user. By default there is already one Office 365 user created based on the customer account. Your can add more users and then assign to them the purchased licenses. |
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 'Assign License' button to assign a new license to this account. |
You can assign one license to one user, provided that the number of used subscriptions is not exceeded already. |
Once the action is completed, you will see assigned licenses on the list. If you want to unassign a license, simply click on the 'Delete' button. |
Subscriptions
The 'Subscriptions' section displays the number of ordered licenses. |
Admin Area
Let's check your new product in the product page in the admin area.
In order to create a customer, user and make an order, the cron job is required as described in point 7 of this section. |
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. |
Suspend/Terminate
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 extended product suspension, all subscriptions assigned to the customer and their users are suspended as well. |
Change Password
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:
|
Product Upgrade/Downgrade
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. |
Importing Existing Customers
If you want to import the existing customers, you need to take the following steps. 1. Firstly, manually create an order for your customer in WHMCS. Choose a client, and in the summary view click on the ' Add New Order' button. Next, select a 'Product/Service' and press 'Submit Order' .
The above-mentioned information has to be consistent with the data from your Microsoft panel. Now, complete these fields as presented below. |
3. If the service has been created, you have to change the 'Username' field in the admin area view. You have to provide the email address of the admin from the panel as 'Username' . The format of 'Username' should look like [email protected]. Important! Remember to manually add other missing parameters of the instance such as domains, credentials, IP Addresses, configurable options, SSH Key, billing cycle, etc. so they match the parameters from the Microsoft panel. |
Tips
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.'; |
3. Please remember that if the product belongs to the 'Standard Provisioning Type' then the 'Upgrade' action is not supported. |
4. It is possible to use a different domain instead of 'onmicrosoft.com' . Note: You cannot delete the 'onmicrosoft.com' domain. If you want to use another domain, please remember that it must be verified by Microsoft. For more info, refer to the following pages: Firstly, you need to add a new custom field userDomain|User Domain. |
Once you add the custom field, your clients will be able to provide their 'User Domain' while placing orders. What is more, you can add a 'User Domain' manually here: |
Navigate to the 'Users' section of the client area. From now, if you create a new user, you may decide which domain your users will use. Important! If a domain used in the 'userDomain' custom field is not validated by Microsoft, you will receive the 'Domain validation failed' error while trying to use it here. |
5. Please remember that when the 'Company Name' field is completed by a client (Client Profile → Profile → Company Name), it will be used by default when a Microsoft account is created. If the company name does not exist in the record, then 'First Name' and 'Last Name' will be used instead. |
Update Instructions
An essential guidance through the process of updating the module is offered here. Important: If you update the module from any version prior to 2.2.0 up to 2.2.0 or higher, please remember that due to the changes in the product configuration, |
Migration
While using the 3.X version of our module, note that no data can be migrated from the Office 365 For WHMCS version 2.x.x, 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. |
Upgrade Guide
Seeking a solution that offers greater flexibility, customization tailored to your precise needs, and unrestricted availability? There is an option that not only proves to be cost-effective in the long run but also includes prioritized support services, making it a truly valuable investment. Opt for the Open Source version of your Office 365 For WHMCS module to unlock these benefits. Follow a comprehensive guide covering the transition process, the advantages it brings, and step-by-step instructions on what to do next after the order has been successfully finalized. |
Common Problems
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). |
4. If you come across the following error "Organization registration id information is missing" when creating a customer account, you need to add organizationNumber|Organization Registration Number custom field and then provide the INN number. The error occurs for customer accounts located in these countries: Armenia(AM), Azerbaijan(AZ), Belarus(BY), Hungary(HU), Kazakhstan(KZ), Kyrgyzstan(KG), Moldova(MD), Russia(RU), Tajikistan(TJ), Uzbekistan(UZ), Ukraine(UA), India, Brazil, South Africa, Firstly, provide a new custom field. |
Now, place the customer’s organization registration number (also referred to as INN number in certain countries). |