Realizando Consultas no Dynamics 365 CRM utilizando Python

Realizando Consultas no Dynamics 365 CRM utilizando Python

Estava trabalhando em um projeto onde precisava realizar consultas das mais diversas formas no Dynamics 365 CRM, e precisava realizar algumas cargas para um banco de dados SQL Server e realizar algumas análises também, como queria agilizar meu trabalho decidi escrever uma “biblioteca” para realizar essas consultas com o CRM de forma simples e eficaz. Com esses dados sendo interpretados pelo python eu consigo utilizar um simples “pd.Dataframe(result_fetchxml)”, para pegar todos os resultados da minha consulta no CRM e utilizar todo poder do Pandas para processar os dados, realizar análises e cargas.

Link para o GitHub do Projeto

https://github.com/3t1n/DynamicsPy

Pré-Requisitos

Instalar as dependências utilizadas no projeto

pip install requests
pip install xml.etree.ElementTree
pip install urllib.parse

Ir no Active Directory no Azure e criar um aplicativo com as permissões de leitura de dados do Dynamics 365 (é necessário o concentimento do administrador do Azure), apos criar o aplicativo obter o secret e o client id para uso de parâmetro na classe D365

Como utilizar

Após instanciar a classe D365, você pode optar pelos métodos get_rows() e fetch_xml(), sendo respectivamente, get_rows() utilizado para realizar consultas utilziando Odata e fetch_xml() utilizado para realizar consultas utilizando FetchXML, além de poder realizar uma Localização Avançada no Dynamics e exportar o seu FetchXML asssim o utilizando no script python.

from d365 import D365

crm = D365("[email protected]", "password", "azure_client_id",
          "https://yourcrm.crm2.dynamics.com", "azure_secret")
 
#geting results using odata
result_odata = crm.get_rows("accounts(E4F3B6D5-9F6A-427D-9592-31B6CD877E77)")

fetchxml = '''
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
 <entity name="account">
   <attribute name="name" />
   <attribute name="primarycontactid" />
   <attribute name="telephone1" />
   <attribute name="accountid" />
</entity>
</fetch>
'''

#geting results using fetchxml
result_fetch_xml = crm.fetch_xml(fetchxml)

Deixe uma resposta