otago / crm
CRM SilverStripe integration
Installs: 4 735
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 6
Forks: 0
Open Issues: 0
Type:silverstripe-vendormodule
Requires
README
Register your Azure application to communicate with CRM
- Create a user account in your Microsoft 365 environment to be used as the token generator for your web application (e.g. webtoken@your_organisation.onmicrosoft.com).
- Add the user account to Dynamics 365 preferably with full permissions.
- In Microsoft Azure Active Directory, create a Native Application in the App Registrations area.
- Within your Native Application, go to Owners and add the user account
- Within your Native Application, go to 'Required permissions' and add 'Dynamics CRM Online'. You must then go to Dynamics' Delegated Permissions and check 'Access CRM Online as organization users'.
- Within your Native Application, go to 'Keys' and generate a new key. Be sure to save the generated value somewhere for later use.
- You should now have everything you need to use the CRM module.
Using the Envornment version:
==================
Add your application details into .env
Create a .env file and add the following:
AZUREAPPLICATIONCLIENT="XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX"
AZUREAPPLICATIONSECRET="my secret key that came from azure portal"
AZUREAPPLICATIONENDPOINT="https://login.microsoftonline.com/XXXXXXXXXXXXX/oauth2/token"
AZUREAPPLICATIONRESOURCELOCATION="https://<myorganisationcrmname>.dynamics.com"
==================
Use the Microsoft Dynamics 365 Web API
https://msdn.microsoft.com/en-us/library/mt593051.aspx
==================
Examples
Post data to CRM
try { CRM::request( 'https://your_organisation.crm5.dynamics.com/api/data/v8.2/leads', 'POST', array( "subject" => "Website Enquiry", "emailaddress1" => $do->YourEmail, "firstname" => $do->YourName, "jobtitle" => $do->Message ) ); } catch ( Exception $e) { throw new SS_HTTPResponse_Exception('failure to connect to crm: '.$e->getMessage()); }
Retrieve data from CRM - return only firstname and lastname - only return the first 3 pages
try { CRM::request( 'https://your_organisation.crm5.dynamics.com/api/data/v8.2/leads?$select=firstname,leadid', 'GET', array(), array('Prefer: odata.maxpagesize=3') ); } catch ( Exception $e) { throw new SS_HTTPResponse_Exception('failure to connect to crm: '.$e->getMessage()); }
Update a object's fields by ID
try { CRM::request( 'https://your_organisation.crm5.dynamics.com/api/data/v8.2/leads(bf830ffd-2047-e711-8105-70106fa91921)', 'PATCH', array( "subject" => "123 Website Enquiry", "email address1" => $do->YourEmail, "firstname" => $do->YourName, "jobtitle" => $do->Message ) ); } catch ( Exception $e) { throw new SS_HTTPResponse_Exception('failure to connect to crm: '.$e->getMessage()); }
Update an individual field for a object by ID
try { CRM::request( 'https://your_organisation.crm5.dynamics.com/api/data/v8.2/leads(bf830ffd-2047-e711-8105-70106fa91921)/subject', 'PUT', array( "value" => "321 Website Enquiry" ) ); } catch ( Exception $e) { throw new SS_HTTPResponse_Exception('failure to connect to crm: '.$e->getMessage()); }
Delete a object by ID
try { CRM::request( 'https://your_organisation.crm5.dynamics.com/api/data/v8.2/leads(bf830ffd-2047-e711-8105-70106fa91921)', 'DELETE' ); } catch ( Exception $e) { throw new SS_HTTPResponse_Exception('failure to connect to crm: '.$e->getMessage()); }