ms crm

Bu bölüm MS CRM ile ilgili temel bilgileri öğretmeyi amaçlar.

MS CRM 2015/2013 Kullanıcıları Aktarma

Ms Crm 2013/2015′ de kullanıcı oluşturmanın birçok yolu var. Standart yöntemlerin aksine burada Import aracı ile kullanıcı almaya bakacağız.

Crm Import Aracı ile Kullanıcı alırken bilinmesi gerekenler

  1. CRM On Premise için: ‘Kullanıcı Adı’ alanı domain adını da içermelidir.(domainkullanıcıadı).
  2. CRM Online için: ‘Birincil Email’ alanı dolu olmalı.
  3. ‘Adı’ ve ‘Soyadı’ alanı dolu olmalı.
  4. Mailbox ayarları default import template’inde bulunmamasına rağmen template’ e eklenip import esnasında map edilebilir.
  5. Import edilen kullanıcılar CRM’ de disabled olacak. (Daha sonra kullanıcıları seçerek  toplu olarak aktifleştirebiliriz.)
  6. Import esnasında kullanıcılarda business unit ile ilgili bir değişiklik yapamıyoruz. Kullanıcılar varsayılan olarak root business unit’ e atanır(Daha sonra kullanıcıları seçerek toplu olarak business unitlerini değiştirebiliriz).
  7. Import edilen kullanıcılara varsayılan olarak ‘Salesperson’ rolü atanır. Eğer bu rolü sildiyseniz import işlemi başarısız olur. Gerekirse bu rol başka bir crm organizasyonundan alınabilir.

Kullanıcı Import Şablonu

Import edebilmemiz için öncelikle kullanıcı import şablonunu almamız gerekiyor. Bunun için (CRM 2015) Ayarlar>Güvenlik>Kullanıcılar daha sonrada sağ üstteki veri ala tıklayıp açılan menüden ‘Alma İçin Şablonu Karşıdan Yükle’ diyoruz.

Ms Crm Kullanıcı Import Ekleme

Ms Crm Kullanıcı Import Ekleme

Kullanıcıların Güvenlik Rollerini  Silme

Kullanıcılara toplu olarak güvenlik rolü atayabiliyoruz ama toplu olarak güvenlik rolü silemiyoruz. Fakat kullanıcının ‘Business Unit’ ini değiştirdiğimiz taktirde güvenlik rollerinden kurtulabiliyoruz.

  1. Eğer 2 veya daha fazla ‘Business Unit’ yoksa oluşturmalıyız. Daha sonra silebiliriz.
  2. Güvenlik rolünü silmek istediğimiz kullanıcıları seçip departmanı değiştire tıklıyoruz.
  3. Kullanıcıları geçici departmanını değiştirip sonra eski departmanına geri atıyoruz.
  4. Artık geçici olarak değiştirdiğimiz departmanımızı silebiliriz.

Kaynak

MS CRM 2015 Hiyerarşi Görselleştirme

MS CRM 2015 ile beraber gelen güzel özelliklerden biride Hiyerarşi Görselleştirme(Hierarchy Visualization). Bu özellik kısaca aynı varlıkların birbiri arasındaki hiyerarşisini görsel bir şekilde kullanıcıya sunuyor. Hiyerarşi Görselleştirme hakkında bilinmesi gerekenler:

  • Varsayılan olarak bazı varlıklarda bu özellik aktif olarak geliyor(accounts, positions, products, users). Yeni oluşturulan bütün varlıklarda bu özellik kullanılabilir fakat varsayılan olarak aktif olarak gelmemekte.
  • Bu özelliği kullanabilmemiz için özelleştirmelerden yeni bir 1-N ilişkisi oluşturup yeni eklenen “Hiyerarşik” özelliğini “Evet” olarak seçmemiz gerekiyor.

    Ms Crm 2015 Hiyerarşik Görselleştirme(Hierarchy Visualizations)

    Ms Crm 2015 Hiyerarşik Görselleştirme(Hierarchy Visualizations)

  • Eğer daha önce “1-N” ilişkisi oluşturulmuş ve Hiyerarşik özelliği “Evet” seçilmisse ikinci sefer aynısını yapamıyoruz(Zaten Hiyerarşik seçeneği pasif duruma geçiyor). Bu ilişki tek seferlik.
  • “1-N” ilişkisi yaparken “İlgili Varlık” ile “Birincik Varlık” aynı varlık olmak zorunda.
  • Gerekli ayarları yaptıktan sonra özelleştirmelerde ilgili varlığa geldiğimiz zaman en altta “Hiyerarşi Ayarları” seçeneği olduğunu görüyoruz.

    Ms Crm 2015 Hiyerarşi Görselleştirme Hiyerarşi Ayarları

    Ms Crm 2015 Hiyerarşi Görselleştirme Hiyerarşi Ayarları

  • Varsayılan olarak Hiyerarşi Ayarı bulunmuyor. Bizim oluşturmamız gerek. Yeni diyoruz ve açılan formdan yeni ayarımızın şema adını, varsayılan hızlı görünüm formunu ve açıklamasını girip yeni kuralımızı oluşturuyoruz.

    Ms Crm 2015 Hiyerarşi Görselleştirme

    Ms Crm 2015 Hiyerarşi Görselleştirme

  • Artık birbiri ile ilişkili ilgili kişilerin yanında küçük bir simge göreceğiz.
    Ms Crm 2015 Hiyerarşi Görselleştirme

    Ms Crm 2015 Hiyerarşi Görselleştirme

    Sonuç

    Ms Crm 2015 Hiyerarşi Görselleştirme

MS CRM 2015 İş Kuralları

MS CRM 2013 İş Kuralları isimli yazı için tıklayınız.

MS CRM 2013 ile beraber gelen yeniliklerden olan iş kuralları(business rules) Ms Crm 2015 ile beraber daha da güçlü hale geldi. Bu yeniliklere bakarsak :

  • Artık varsayılan değeri ayarlıyabiliyoruz
  • Artık iş kurallarımız sunucu taraflı da çalışabiliyor.
  • Artık “Ve”/”Veya” operatörlerini kullanabiliyoruz. Bu sayede çok sayıda birbirine benzer iş kuralları yazmanın önüne geçmiş oluyoruz.
  • Artık koşullarımıza “Değilse” mantığını da ekleyebiliyoruz.

Varsayılan Değer

Önceki yazıda olduğu gibi yeni iş kuralı diyoruz(Önceki yazıya buradan ulaşabilirsiniz).
Aşağıdaki gibi “Eylem” kısmından varsayılan değeri ayarlama diyoruz.

Ms Crm 2015 iş kuralları(business rules)

Ms Crm 2015 iş kuralları(business rules)

Daha sonra da hangi alana varsayılan değer atanmasını istiyor isek o alanı seçiyoruz.

Ms Crm 2015 İş Kuralları(Business Rules)

Ms Crm 2015 İş Kuralları(Business Rules)

Artık her firma oluşturduğumuzda bölge isimli alanımızın varsayılan değeri “Bölge 1” olacak.

Sunucu Taraflı Çalışabilme

Biliyoruz ki javascript ile client tarafında yazdığımız kodlar sadece crm arayüzünde yani kullanıcı crm ile etkileşime geçtiği zaman çalışır. Örneğin crm arayüzünden firma oluşturur isek client tarafında yazdığımız javascript kodları işleyecektir. Ama firmaları veri yönetiminden import eder isek kullanıcı doğrudan crm arayüzünden etkileşime geçmediği için javascript kodlarımız çalışmayacaktır. Ms Crm 2013′ de iş kuralları aynı bu şekilde javascript mantığı ile çalışıyordu. Ama MS CRM 2015 ile beraber artık iş kurallarımız sunucu taraflı da çalışabiliyor. Yani firmadaki bir alanın değerini iş kuralları ile belirlediyseniz veri yönetiminden firma import ettiğimizde bu iş kuralı çalışacak ve o alana o değeri verecektir. Sadece iş kurallarını dizayn ettiğimiz kısımda iş kuralının kapsamını “Varlık” olarak seçmeliyiz. Artık iş kuralımız hem client taraflı hem server taraflı çalışacaktır.

Ms Crm 2015 İş Kuralları (Business Rules)Kapsam

Ms Crm 2015 İş Kuralları (Business Rules)Kapsam

“Ve”/”Veya” Operatörü

Aşağıdaki resimdeki gibi “Ve”/”Veya” kullanabiliyoruz.

Ms Crm 2015 İş Kuralları(Business Rule) Operatörler

Ms Crm 2015 İş Kuralları(Business Rule) Operatörler

“Değilse” Mantığı

Ms Crm 2015 İş Kuralları (Business Rules)Değilse

Ms Crm 2015 İş Kuralları (Business Rules)Değilse

MS CRM 2013 Asenkron Çözüm Alma

Çözümleri sistemimize import  ederken genellikle sistem yavaşlar ve bu süre içerisinde bir işlem yapamayız. Ms Crm 2013 ile artık asenkron olarak çözümlerimizi import edebiliyoruz. Ne yazikki şuan sadece kod tarafında bu işlem mümkün. Crm arayüzünden yaptığımız import işlemi senkron olarak devam etmekte.

Öncelikle  ExecuteAsyncRequest  isimli  asenkron olan process’ i kullanacağız. ExecuteAsync  request’imizi Organization Service kullanarak  gönderip  mesajımızın  asenkron bir iş olarak işleme koyulmasını sağlıyoruz. Gönderdiğimiz asenkron işin idsini elde ettiğimiz zaman çözümümüzün başarıyla veya başarısız olarak  import edildiğini anlıyoruz.

Örnek:

ExecuteAsyncResponse response = (ExecuteAsyncResponse)_service.Execute(request);
Burada aşağıdaki gibi asenkron işimizin id sini alıyoruz.

Mscrm solution import

Mscrm solution import

Veya sistem işlerinden oluşturulan job’ u bulup çözümümüzün başarılı bir şekilde import edilip edilmediğine bakabiliriz. Asenkron olarak çözümlerimizi aldığımız zaman sistemimiz kitlenmez ve kullanıcıların sürekli timeout almasını engellemiş oluruz.

Kaynak

MS CRM Environment Diagnostics

Dynamics CRM(on-premise) yüklerken veya varolan organizasyonumuzu import ederken hata veya sorunla karşılaşmamız için birtakım kontroller gerçekleştirir ve olası sorun ve hataları gösterir.

Eğer bu hata mesajına çift tıklarsak help dosyası açılır ve hatanın detayını görebiliriz. İşte bu help dosyasının bulunduğu kısım :

C:Program FilesMicrosoft Dynamics CRMToolsEnvironmentDiagnostics.chm

Kuruluma veya organizasyonu import etmeden önce bu yardım dökümanına göz atmakta fayda var.

Kaynak

MS CRM 2013 Erişim Takımları

Erişim Takımları(Access Teams) Microsoft Dynamics CRM 2013 ile beraber gelen özelliklerden olup varlıklar için ayrıcalıkları ve izinleri  CRM ‘ de tanımlamız için bize yeni bir yol sunuyor.

Nasıl Kullanılır?
Sistemi özelleştirden erişim takımlarını kullanmak istediğimiz varlığa gidip Erişim Takımlarını aktif hale getirmeliyiz.
NOT: Bir kere aktifleştirildiğinde bu değişiklik geri alınamıyor.

Erişim Takımları
Erişim Takımları
Şimdi ise Firma varlığımızda kullanmak istediğimiz erişim takımlarını oluşturmalıyız. Bunun için Ayarlar>Yönetim>Erişim Takımı Şablonlarına gitmeliyiz.
Erişim Takımı Şablonları

Buradan yeni diyerek Erişim Takımı Şablonu oluşturacağız. Karşımıza gelen ekranda varlık kısmında önceki adımlarda Erişim Takımını hangi varlık için aktif ettiysek onu seçmeliyiz.
NOT: Eğer hiçbir varlık gözükmüyorsa hiçbir varlık için erişim takımları aktif edilmemiş demektir.

Yeni Takım Şablonu

Daha sonra firma varlığımızın form tasarımına gelerek bir adet alt ızgara yani Subgrid’ e  tıklayalım.

Alt Izgara

Aşağıdaki ayarlar ile Subgrid oluşturalım.

Alt Izgara Özellikler
Not: Eğer varsayılan görünüm kısmında “İlişkili Kayıt Takım Üyeleri” seçeneğini seçmez isek takım şablonu alanı aktif olmaz.
 
Not:Eğer oluşturulan Erişim Takımlarını Ayarlar/Yönetim/Takımlar içerisinde bulmaya çalıştığında olmadığını farkedeceksiniz. Bu oluşturulan takımları bulmak için gelişmiş buldan takımlarda arama yapabilirsiniz. Oluşturulan takımların Takım Türü: Erişim ve Takım adları GUID den oluşmakta.
Örneğin:
Erişim Takımı Adı
 
NOT: Erişim takımlarına yazılım yoluyla kullanıcı eklemek için SDK ya AddUserToRecordTeamRequest mesajı eklendi. Kullanımı:

Kaynak:
http://www.microsoft.com/en-us/download/confirmation.aspx?id=41190
http://www.powerobjects.com/blog/2013/11/06/access-teams-in-dynamics-crm-2013/
http://www.fmtconsultants.com/2014/03/improving-performance-with-access-teams-in-microsoft-dynamics-crm-2013-a-how-to-guide/
https://community.dynamics.com/crm/b/crmpowerobjects/archive/2013/11/05/implementing-access-teams-in-dynamics-crm-2013.aspx
http://garethtuckercrm.com/2013/11/24/crm-2013-new-features-access-teams/
https://crmbusiness.wordpress.com/2014/05/15/crm-2013-mb2-703-access-teams-and-access-team-templates-how-to-use-them-and-key-facts/

MS CRM 2013 Entity Image

CRM 2013′ ün yeni özelliklerinden biri de artık kayıtlarımıza(firma logosu, profil resimleri, ürün resimleri gibi ) resim ekleyebiliyor olmamız.

NOT: Her valıkta bir adet resim alanımız olabiliyor. Eğer ikincisini eklemeye kalkıştığımızda hata alıyoruz.

Tüm özel varlıklarımıza resim alanı ekleyebiliyoruz. Ama sistem varlıklarında bu durum kısıtlı. Aşağıda hangi sistem varlıklarında resim alanı olduğunu görebilirsiniz. (daha&helliip;)

MS CRM 2013 İş Kuralları

Yeni: MS CRM 2015 İş Kuralları (Business Rules) yazısı için tıklayınız.

Microsoft Dynamics Crm 2013 yeni özelliklerinden Business Rule (İş Kuralları) formlarınızda JavaScript kodu yazmadan iş kuralları oluşturmanıza olanak sağlar. Sunduğu arayüz ile hızlı bir şekilde  Ana Görünüm ve Hızlı Görünüm formlarında sık kullandığınız iş kurallarınızı oluşturup düzenleyebilirsiniz.

Not: Dynamics CRM 2015’de iş kuralı oluştururken kapsam olarak “Varlık” seçersek artık server side taraflı çalışabiliyor. Yani iş kuralları sadece CRM arayüzünden yaptığımız değiştikliklerde değil yazılımsal olarak yaptığımız değişikliklerde de (Workflow ve plugin gibi) server side çalışabiliyor. (Kaynak)

İş Kuralları İle Yapılabilecekler:

    • Alanların değerlerini değiştirebilirsiniz.
    • Alanların gerekliliklerini değiştirebilirsiniz.
    • Alanları gösterip gizleyebilirsiniz.
    • Alanları formda gösterip gizleyebilirsiniz.
    • Alanların değerlerini doğrulayıp fomda hata mesajı gösterilmesini sağlayabilirsiniz.
Basit bir örnek:

İlgili kişi formumuzda  “Tercih Edilen İletişim Yöntemi” isimli seçenek kümesi alanında seçilen değere göre alanlarımızı gizleyip gösterelim. Alanımızda aşağıdaki değerler olsun:

Yeni İlgili Kişi
Ms Crm 2013 Option SetEğer E-Posta alanı seçilirse Telefon alanını gizleyelim. Öncelikle Sistemi Özelleştir formumuzu açalım. Ve İlgili Kişi varlığımızı seçip İş Kurallarından Yeni’ ye tıklayalım.
İş Kuralları Özelleştirme

İş Kuralımızın adını ve kurallarımızı yazalım.

İş Kuralları Oluştur
Aşağıdaki kuralları isteğinize göre değiştirebilirsiniz. Örnek olması açısından basit olsun istedim.
İş Kuralları Etkinleştir

Artık iş kuralımızı aktifleştirdiğimizde. Tercih edilen bağlantı yöntemini “E-Posta” seçer isek  “Cep Telefonu” alanı gizlenecek.

Kaynak:
http://msdn.microsoft.com/en-us/library/dn481574(v=crm.6).aspx
https://community.dynamics.com/crm/b/crminogic/archive/2014/10/06/business-rule-updates-in-dynamics-crm-2015.aspx
http://www.powerobjects.com/blog/2014/02/19/creating-if-then-else-logic-in-crm-2013-business-rules/
http://www.powerobjects.com/blog/2013/10/24/become-pseudo-developer-business-rules-crm-2013/

MS CRM Gelişmiş Bul Sorgularının Sql Scripti

Aşağıdaki gelişmiş  bul sorgu muzun kullandığı sql sorgusunu bulalım.


Gelişmiş Bul Sorgusu

Sağ üst taraftaki kişilere ver butonuna tıklayalım.

Gelişmiş Bul Sorgusu Excel Export

Açılan ekranda dinamik çalışma sayfasını seçiyoruz ve ileriyi seçip istediğimiz alanları seçip ver diyoruz.

Dinamik Çalışma Sayfası

İndirdiğimiz xml dosyasını herhangi bir text editor ile açıyoruz ve  tagları arasında kalan kısımı alıyoruz. İşte bizim sql sorgumuz:

Not: İsterseniz xml dosyasının uzantısı excel dosyası uzantısına çevirip ile excel dökümanından da sql sorgusuna ulaşabilirsiniz. Bunun için excel dosyasını açıp Data>Connection>Properties>Detail>Query yolunu takip etmelisiniz.

Swagger ile Restfull API Dökümantasyonu

Swagger için, restfull apilerimizi dökümante edebileceğimiz son zamanlarda standart haline gelmiş bir kütüphane diyebiliriz. Java,.net, node.js, php, python, ruby gibi birçok yazılım diline frameworku bulunmakta. Ben burada asp.net web api için oluşturulmuş(node.js versiyonu daha sonra) Swagger.net ‘i anlatacağım. Öncelikle Visual Studiomuzu açıp yeni asp.net mvc4 projesi diyelim ve açılan pencereden web api seçeneğini seçelim. 

Visual Studio bizim için varsayılan bir web api projesi oluşturdu. Solution Explorer dan controllerlarımızın olduğu Controllers klasörüne baktığımız zaman 2 adet (HomeController.cs ve ValuesController.cs) controller olduğunu görüyoruz.

Bunlardan ValuesController sınıfını açtığımız zaman sınıfımızın ApiController isimli classdan inherit ettiğini görüyoruz.

Bunun anlamı ValuesController sınıfı web apimiz için metodlar yazacağımız sınıfımız olduğu(Eğer istersek kendimiz controller oluşturup ApiController sınıfından inherit etmesini sağlayabilirdik).

Dikkat edersek metodların üzerinde yorum satırları olduğunu görürüz. İşte Swaggerın bize sunacağı dökümantasyon kütüphanesi bu yorum satırlarından oluşuyor.

Projemize swagger kütüphanesini nuget paket yöneticisini kullanarak ekleyebiliriz. Öncelikle nuget package manager consoluna Install-Package Swagger.Net  yazalım ve Swagger.Net in kütüphanesini projemize ekleyelim.

Artık ValuesController sınıfımızda web api metodlarımızın üzerine yazdığımız yorum satırlarına swaggerın sunduğu api üzerinden erişebiliriz. Ama önce projemizi derleyip çalıştıralım. Aşağıdaki hata ile karşılaşmamız normal çünkü gereken bazı ayarları yapmadık.

Hatada da yazdığı gibi swaggerın çalışabilmesi için projemize sağ tıklayıp Properties >Build ‘ e geliyoruz .

Buradan XML documentation file seçeneğini işaretliyoruz(varsayılan olarak işaretsiz geliyor) ve dökümantasyon dosyamızın nereye kaydedileceğini seçiyoruz. Default değerde bırakıyoruz( Eğer custom bir yol belirlemişsek çalışmayacak. Çalışması için  AppStart/SwaggerNet.cs dosyasını düzenlememiz gerekiyor)

Şimdi projemizi derleyip çalıştıralım ve Url adresine http://localhost:xxxxx/api/swagger girelim. Karşımıza json formatında bazı bilgiler çıkacaktır.


Aslında bu gördüğümüz bilgiler Swagger kütüphanesinin bize sunduğu dökümantasyon bilgilerimiz. Ama dikkat edersek description kısmında ” No Documentation Found” diyor. Yani dökümantasyon bulunamadı. Bunun sebebi swaggerın metodun üzerine yazdığınız dökümantasyon commentlerinin formatını öyle kafanıza göre veremiyor olmanız. Yazılım dünyasında genel olarak kabul gören dökümantasyon formatlarını kullanmalısınız  ki swagger bunu net birşekilde algılayıp parametre yollamanıza olanak sağlasın(Parametre olayı ileride işlenecek). O zaman biraz dökümantasyon yapalım.

        

///         public IEnumerable Get()         {             return new string[] { “value1”, “value2” };         }         ///
/// Get a single Value by it’s id         ///

///         ///         public string Get(int id)         {             return “value”;         }         ///
/// Post api/values         ///

///         ///         public void Post([FromBody]string value)         {         }         ///
/// Put api/values         ///

///         ///         ///         public void Put(int id, [FromBody]string value)         {         }         ///
/// Remove a Value by it’s id         ///

///         public void Delete(int id)         {         }

Metodlarımızı dökümante ettikten sonra swagger apisini çağırdığımızda bize vereceği veri aşağıdaki gibi oluyor.

{“apiVersion”:”4.0.0.0″,”swaggerVersion”:”2.0″,”basePath”:”http://localhost:59501″,”resourcePath”:null,”apis”:[{“path”:”/api/docs/Values”,”description”:”Get all of the values.”,”operations”:[]}]}

Şimdi ikinci kullanacağımız araç swagger-ui . Bu kütüphane swagger apide bize dönen değerleri güzel bir arayüzde bize sunup dökümante ettiğimiz metodları test edebilmemize ve dökümanteyi görebilmemize olanak sağlayan bir UI. Bunuda Nuget yardımıyla projemize ekliyoruz. Package Manager Consolumuza Install-Package Swagger.Net.UI yazıyoruz ve enter a basıyoruz. Gerisini nuget halledecek ve projemize ekleyecektir.


Dikkat eder isek projemize SwaggerUi diye bir klasör ekledi. Bu klasörün içerisinde swagger apisinden dönen değerleri bize sunan arayüz, html ve js ler bunlunmakta.

Projemizi derleyip çalıştırıyoruz. Ve url adresimize http://localhost:xxxxx/swaggerui/ yazıyoruz. Karşımıza gelen ekran SwaggerUi ‘ın ana ekranı.


Burada dikkat edersek http://YOUR-URL-HERE:PORT/api/swagger diye bir url yazıyor. Bu url adresi bizim swagger apimizin url i (swagger ui kurmadan önce bize json formatında veri veren api).
Oraya kendi swagger apimizin adresini giriyoruz ve explorer butonuna basıyoruz.

Farkettiyseniz bizim Values isimli web apimiz geldi. Hemen üzerine tıklıyoruz.

Gördüğünüz gibi Values isimli web api sınıfımızın içindeki tüm metodlar ve dökümantemiz geldi.(Yorumlarımız sağda gözüküyor). Şimdi ilk olarak /api/Values isimli metodumuzu temsil eden get metodumuza tıklayalım.

Try it out isimli buton karşımıza geldi. Tıklayalım.

Evet metodumuz çalıştı ve veriyi json formatında gönderdi. Bu şekilde restfull metodlarınıda SwaggerUi üzerinden test edebiliyoruz. Peki ya parametre göndermek istersek o zaman nasıl yapacağız? Aşağıdaki gibi…

Örnek Projenin Github Adresi:https://github.com/fuattatar/swaggernet.git

Kaynak:
https://github.com/Swagger-Net/Swagger.Net
https://github.com/wordnik/swagger-spec
http://swagger.io/
https://www.nuget.org/packages/Swagger.Net.UI/