1. Anasayfa
  2. Dynamics 365

Dynamics CRM Ve Azure Application Insights Entegrasyonu


0

Birçok Microsoft Azure servisini Dynamics CRM ile entegre edebilmekteyiz. Bunlardan en güzel örneklerden birisi Application Insights ve Dynamics CRM birlikteliği. Bu makalede bu Application Insights ile Dynamics CRM’i nasıl konuşturacağımızı göreceğiz. Öncelikle Application Insights’in ne olduğuyla başlayalım isterseniz.

Visual Studio Application Insight bir telemetri servisidir yani bir sistemi detaylı olarak incelemek istediğinizde ona veri gönderdiniz ve bu verileri detaylı bir şekilde grafikler ve tablolar halinde izlediğiniz sonucunda rapolar alarak sisteminizin durumu hakkında bilgiler edindiğiniz bir hizmettir. Kısacası size sisteminizin sağlıklı çalışıp çalışmadığı hakkında ölçeklenebilir bilgiler vermektedir.

Dynamics CRM ise bir web tabanlı uygulama olduğundan IIS üzerinde oluşan web sayfası görüntüleme taleplerini bunların suresini ve bu taleplerin kimden geldiğini, hangi sayfalara bakıldığını detaylı olarak Application Insights’a aktarabiliriz.
Hadi başlayalım.

Azure İçinde Application Insights Kaynağı Oluşturalım

Azure hesabınız yoksa bu adresten olusturabilirsiniz. Sisteme giriş yaptıktan sonra Browse’a tıkladıktan sonra Application Insights’i seçeneğini ile oluşturma penceresini açıyoruz burada tek dikkat etmeniz gereken nokta Application Type seçeneğinde Asp.Net’i seçmeniz gerekmekte. Gerekli bilgileri doldurduktan sonra Create düğmesiyle kendi Application Insights’inizi oluşturabilirsiniz.


Resim-1

Bu noktadan sonra ekrandaki grafiklere tıklayarak her bir grafik bölümünün içinde o bölüme nasıl veri atabileceğinize dair örnekler yer almakta.


Resim-2

Javascript İle CRM İçerisinden Veri Gönderelim

Dynamics CRM’i açıp Ayarlar(Settings)>Ozellestirme(Customization)>Customize the System(Sistemi Ozellestir) bölümünden yeni Web Resource(Web Kaynağı) ekliyoruz.


Resim-3

Ben aşağıdaki kod parçasını kullanıyorum bu kod parçası ile CRM içerisinden kullanıcıyı ve işlem yapılan entity’i(nesne) parametre olarak gönderiyorum.

var UserName;

var Alias;

var serverUrl;

function Getinfo() {

    var context;

    var UserID;

    var ODataPath;

    var selectFields = “$select=DomainName,FullName”;

    context = Xrm.Page.context;

    serverUrl = context.getClientUrl();

    UserID = context.getUserId();

    ODataPath = serverUrl + “/XRMServices/2011/OrganizationData.svc”;

    var retrieveUserReq = new XMLHttpRequest();

    retrieveUserReq.open(“GET”, ODataPath + “/SystemUserSet(guid'” + UserID + “‘)?” + selectFields, false);

    retrieveUserReq.setRequestHeader(“Accept”, “application/json”);

    retrieveUserReq.setRequestHeader(“Content-Type”, “application/json; charset=utf-8”);

    retrieveUserReq.onreadystatechange = function () {

        retrieveUserReqCallBack(this);

    };

    retrieveUserReq.send();

}

function retrieveUserReqCallBack(retrieveUserReq) {

    if (retrieveUserReq.readyState == 4 /* complete */) {

        if (retrieveUserReq.status == 200) {

            var retrievedUser = JSON.parse(retrieveUserReq.responseText).d;

            if (retrievedUser.FullName != null) {

                UserName = retrievedUser.FullName;

                Alias = retrievedUser.DomainName;

            }

        }

    }

}

function captureTelemetry() {

    var appInsights = window.appInsights || function (config) {

        function s(config) { t[config] = function () { var i = arguments; t.queue.push(function () { t[config].apply(t, i) }) } } var t = { config: config }, r = document, f = window, e = “script”, o = r.createElement(e), i, u; for (o.src = config.url || “//az416426.vo.msecnd.net/scripts/a/ai.0.js”, r.getElementsByTagName(e)[0].parentNode.appendChild(o), t.cookie = r.cookie, t.queue = [], i = [“Event”, “Exception”, “Metric”, “PageView”, “Trace”]; i.length;) s(“track” + i.pop()); return config.disableExceptionTracking || (i = “onerror”, s(“_” + i), u = f[i], f[i] = function (config, r, f, e, o) { var s = u && u(config, r, f, e, o); return s !== !0 && t[“_” + i](config, r, f, e, o), s }), t

    }({

        instrumentationKey: “Burayi degistirin”

    });

    window.appInsights = appInsights;

    appInsights.trackPageView(Xrm.Page.data.entity.getEntityName(), serverUrl, { User: Xrm.Page.context.getUserName(), DomainName: Alias });

    appInsights.trackEvent(Xrm.Page.data.entity.getEntityName());

}

function startPoint() {

    Getinfo();

    captureTelemetry();

}


Resim-4

Kodun içerisindeki “instrumentationKey: “Burayı değiştirin”” bölümündeki instrumentationKey “Essentials” altında bulabilirsiniz.

Ben yukarıdaki kodu Account(Firma) ve Contact(Contact) entity’lerinin onLoad event’lerine yerleştirdim.


Resim-5

Bunu yapmak için form üzerindeki üç noktaya tıklıyoruz ve form düzenleyicisini açıyoruz. Form düzenleyicisi üzerinden Form özeliklerini açıyoruz ve biraz önce eklemiş olduğumuz js web kaynağını buradan seçiyoruz ve ekliyoruz.


Resim-6

Yapmış olduğumuz değişiklikleri kaydedip formu yayınlıyoruz,

Artık form her açıldığında  Application Insights’e veriler gidecektir. Benim demo sistemimden elde ettiğim ekran görüntüleri aşağıdaki gibidir. AppInsights’a ilk girdiğimde aşağıda görüldüğü gibi bir ekran bizi karşılamakta. Sırasıyla bu kutucuklara tıkladığımda detaylı bilgileri almaktayım.


Resim-7

Request ve Response zamanlarını;


Resim-8

Kullanıcının sayfaları ne zaman hangi cihazdan çağırdığı ve yüklenme surelerini;


Resim-9

Hangi formların ne kadar çağrıldığını;


Resim-10

Ve metadata bilgilerine;


Resim-11

Yukarıda görüldüğü gibi ulaşabilmekteyim. Bunun haricinde formlarda oluşan hataları ve kullanıcı detaylarını (geolocation gibi) da almaktayım.

Application Insights hakkında daha fazla bilgiye buradan ulasabilirsiniz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

https://www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Barış Kanlıca firmalara CRM ve yazılım konusunda danışmanlık yapmaktadır ve yazılım eğitimleri vermektedir. Dynamics CRM alanında yaptığı çalışmalarından dolayı Microsoft kendisine bu alanda sadece 55 kişide olan MVP(Most Valuable Professional) unvanını ve ödülünü vermiştir. Barış Kanlıca birçok üniversite ve seminerde konuşmacı olmaktadır. Kendisi INETA topluluğunun bir konuşmacısıdır. Ayrıca www.yazgelistir.com, www.yazilimgunlugu.com ve www.nedirtv.com sitelerinde bölüm editörüdür.Uzunca bir süredir Londra'da yaşayan Barış Kanlıca ve kurucusu olduğu Mawens Business Solution'da danışmanlık hizmeti vermeye devam etmektedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir