cub-e.net

just coding...

Dynamics 365 CRM egitimi

Dynamics CRM, Dynamics 365 CRM’e dönüştü.  Bu dönüşümün detaylarını  CRM MVP'si olan uzman eğitmenlerimizden öğrenmek ister misiniz?

-Dynamics 365 sertifikasyon sınavlarına hazırlananlar,
-Dynamics 365 CRM geliştiricileri,
-Proje Yöneticileri
-Kullanıcılara yönelik hazırladığımız sertifikalı uzman eğitmenlerimizin vereceği eğitimleri kaçırmayın. 

Omerd CRM Eğitim serisi ile farklı seviyelerdeki profesyonellere uygun olarak planlanan eğitimlerimizin tüm detaylarına ve kayıt formuna buradan ulaşabilirsiniz. 

Eğitim Yeri : Wissen Akademi – Beşiktaş / İstanbul

Eğitim Konuları ve Ücretler:

14-15 Mayıs : Uygulama/Application – 2 Gün   
$399 + KDV

(Kimler Katılabilir: Her seviyedeki CRM kullanıcıları)


16-17 Mayıs : Özelleştirme/Customization 2 Gün 
$399 + KDV

(Kimler Katılabilir: Sistem Yöneticileri, Orta ve İleri Düzey CRM kullanıcıları)


21-23 Mayıs : Geliştirme/Extending – 3 Gün  
$499 +KDV

(Kimler Katılabilir: Yazılım Geliştiriciler)

14-23 Mayıs Tarihleri arasında Gerçekleştireceğimiz Eğitimimize Siz de Katılmak İsterseniz Lütfen "Kayıt Olun" Butonundan Rezervasyon Yaptırın.

Kayıt Olun!


SDK ve NuGet kullanarak Dynamics 365 CRM'e baglanma

Yontem 1: SDK Kullanmak

 

https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/download-tools-nuget adresinden alacaginiz asagidaki powershell scripti ile sdk icerisindeki araclari 4 klasor halinde bilgisayariniza indirebilirsiniz.

 

$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"

$targetNugetExe = ".\nuget.exe"

Remove-Item .\Tools -Force -Recurse -ErrorAction Ignore

Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe

Set-Alias nuget $targetNugetExe -Scope Global -Verbose

 

##

##Download Plugin Registration Tool

##

./nuget install Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool -O .\Tools

md .\Tools\PluginRegistration

$prtFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool.'}

move .\Tools\$prtFolder\tools\*.* .\Tools\PluginRegistration

Remove-Item .\Tools\$prtFolder -Force -Recurse

 

##

##Download CoreTools

##

./nuget install  Microsoft.CrmSdk.CoreTools -O .\Tools

md .\Tools\CoreTools

$coreToolsFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.CoreTools.'}

move .\Tools\$coreToolsFolder\content\bin\coretools\*.* .\Tools\CoreTools

Remove-Item .\Tools\$coreToolsFolder -Force -Recurse

 

##

##Download Configuration Migration

##

./nuget install  Microsoft.CrmSdk.XrmTooling.ConfigurationMigration.Wpf -O .\Tools

md .\Tools\ConfigurationMigration

$configMigFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.XrmTooling.ConfigurationMigration.Wpf.'}

move .\Tools\$configMigFolder\tools\*.* .\Tools\ConfigurationMigration

Remove-Item .\Tools\$configMigFolder -Force -Recurse

 

##

##Download Package Deployer

##

./nuget install  Microsoft.CrmSdk.XrmTooling.PackageDeployment.WPF -O .\Tools

md .\Tools\PackageDeployment

$pdFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.XrmTooling.PackageDeployment.Wpf.'}

move .\Tools\$pdFolder\tools\*.* .\Tools\PackageDeployment

Remove-Item .\Tools\$pdFolder -Force -Recurse

 

##

##Remove NuGet.exe

##

Remove-Item nuget.exe

 

 

Yukaridaki script ile Dynamics 365 SDK'yi indirdiyseniz CoreTools altinda su 3 dll'I bulabilirsiniz:

 

Microsoft.Xrm.Sdk.dll

Microsoft.Crm.Sdk.Proxy.dll

Microsoft.Xrm.Tooling.Connector.dll

 

Bu dll'leri uygulamanize referans olarak ekledikten sonra asagidaki using parametlerini islem yapmak istediginiz sinifa eklemeniz gerekmekte.

 

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Query;

using Microsoft.Xrm.Tooling.Connector;

 

Yontem 2: NuGet Kullanmak

NuGet paketlerini kullanmak uygulama gelistirme ve derleme asama bircok problemi ortadan kaldirmakta. Ozellikle ekip halinde kod gelistiriyor ve TFS-VSO-Github gibi ortamlarda kodusakliyorsaniz her kod gelistiricinin kendi bilgisayarinda farkli noktalarda tuttugu dll referanslari daha sonra basiniza dert olacaktir. Iste bunu onlemenin en pratik yolu NuGet uzerinden referanslari almak ve kullanmaktir.

 

Nuget package konsolundan ya da Visual Studio arabirimi uzerinden asagidaki 2 paketi bulun ve projenize ekleyin.

 

  1. Microsoft.CrmSdk.CoreAssemblies
  2. Microsoft.CrmSdk.XrmTooling.CoreAssembly

 

Diger paketler otomatik olarak kurulacaktir.

 

Her iki yontem icin ortak adimlar

Asagidaki connection stringlerden hangisi size uygunsa ilgili connection string'I alabilirsiniz:

<!– Online using Office 365 –>

<!–<add name=”Server=CRM Online”

connectionString=”Url=https://myserver.crm.dynamics.com; Username=user@myserver.com; Password=password; authtype=Office365″/>–>

<!– On-premises with provided user credentials –>

<!– <add name=”Server=myserver, organization=AdventureWorksCycle, user=administrator”

connectionString=”Url=http://myserver/AdventureWorksCycle; Domain=mydomain; Username=administrator; Password=password; authtype=AD”/> –>

<!– On-premises using Windows integrated security –>

<!– <add name=”Server=myserver, organization=AdventureWorksCycle”

connectionString=”Url=http://myserver/AdventureWorksCycle; authtype=AD”/> –>

<!– On-Premises (IFD) with claims –>

<!–<add name=”Server=myserver.com, organization=contoso, user=someone@myserver.com”

connectionString=”Url=https://contoso.myserver.com/contoso; Username=someone@myserver.com; Password=password; authtype=IFD”/>–>

 

CRMServiceClient sinifina ilgili connection string'I veriyoruz ve elde ettigimiz servisi kullaniyoruz.

 

CrmServiceClient conn = new CrmServiceClient(ConfigurationManager.ConnectionStrings[“Server=CRM Online”].ToString());

var _orgService = (IOrganizationService)conn.OrganizationServiceProxy;

 

Artik fetchXML ile veri cekebilir ya da Insert/Update/Delete/Execute islemlerini _orgService ile icra edebilirsiniz.

IT Projelerinde Yapılan Hataları Konuşuyoruz etkinliginin ardindan

25 Subat gunu Microsoft Istanbul ofisinde cok guzel bir etkinlik gerceklestirdik. 90 dinleyici o gun bizi yalniz birakmadi ve ustatlarin agzindan proje deneyimlerini dinlediler.

Ilk bolumde Mustafa Kara moderatorlugunde Nihal Battallar, İbrahim Durak, Mustafa Ozan, Serkan Esen ve Emre Aydın projelerdeki sorunlari ve bunlarin cozum yollarini kendi deneyimlerinden yola cikarak tartistilar.

Ikinci bolumde ise ben ve serkan Esen "Partner Secme Kriterleri" adinda bir sunum yaptik.

Bu sunum sirasinda ben MBA yaparken Research Methodology dersi icin hazirlamis oldugum PARTNERSHIP ECOSYSTEM IN SOFTWARE DEVELOPMENT - Microsoft Case Study odevindeki sorulardan yola cikarak sunumu hazirladim.

  • Partner’ın teknik yeterliliğini ve bilgisini ölçmek için genel bir yol var mıdır?
  • Partner’ın sizinle aynı sektörde proje deneyiminin olmasının seçiminize etkisi nedir?
  • Partner’ın geçmişinde başarılı ve başarısız proje deneyimlerinin etkisi nedir?
  • Partner, sektör standarttı haline gelmiş proje yönetim metodolojilerine sahip ya da uygulamakta mıdır?
  • Partner ne kadar uzun süredir sektörde faaliyet göstermektedir?
  • Partner çalışanlarının sertifikalı uzmanlar olması ile yerel/uluslararası tecrübelerinin olması arasındaki denge nedir?

  • Is there a generalised way to measure technical competence and know-how of a partner?
  • What is the weighted effect of partner having project experience in the same industry of the client a selection criteria?
  • What is the weighted effect of successfully and failed project experiences in the past of partner?
  • Does the partner have or apply a sector-standard project management methodology?
  • How long is your partner working in the sector is a selection criteria?
  • What is the preferred balance of focus for employees of the partner between completed certification programmes and project experiences in both the local and international markets?

Emegi gecen herkese cok tesekkurler.

Sizinle etkinlikle ilgili fotograflari da paylasmak istiyorum.












CRM Saturday - Istanbul

1 Kasım’da Microsoft yeni bulut bilişim platformu Dynamics 365’i duyurdu. Yeni platform CRM ve ERP çözümlerinin bulutta yeni ve mükemmel birleşimi ve birçok yeni özellikle birlikte gelmekte. Microsoft’un bu yeni çözümünü bütün detaylarıyla inceleyeceğimiz bu etkinlikte Dynamics 365’in bulutta ne özellikler sunduğunu ve diğer Microsoft ürünleri olan Azure ve Office 365 ile nasıl entegre olduğunu konunun uzmanlarından dinleyeceksiniz.

26 Kasım 2016
10:00 – 15:45


Dynamics CRM 2016 upgrade sonrasi kullanicilarin kayitlari gorememesi problemi

Dynamics CRM'de bir yazilim ve bug'lari oluyor elbette. Karsilastigim bir bug ve cozumunu de sizinle paylasmak istiyorum.

CRM 2016'ya eger onceki veriyondan upgrade ederek gectiyseniz bazi kullanicilarin sisteme giris yaptiktan sonra hicbir kaydi goruntuleyemedigini gorebilirsiniz. Bu sorun upgrade islemi sirasinda yetki gruplarinda kaynaklanan bir hatadan olusmaktadir ve kullanicinin sisteme girmesine izin vermesine ragmen kayitlara erisimini engellemektedir.

Cozum ise bu sorunu yasayan kullanicilarin guvenlik rollerini kaldirip yeniden vermek. Konuyla ilgili Microsoft'ta case acilmis durumda ilk guncellemede duzelecegini umuyorum.

Bu sekilde sorun cozulmekte. Sizlerin de karsilastigi sorunlar varsa lutfen bildirin ki burada yayinlayarak herkese faydali olmaya calisalim.


"Satış problemlerinizi Dynamics CRM ile çözün" seminer duyurusu

Eğer siz de aşağıdaki sorunları yaşayan bir satış organizasyonu içerisindeyseniz internet üzerinden canlı olarak gerçekleşecek olan etkinliğimize katılabilir Microsoft Dynamics CRM ürününün nasıl bütün sorunların üstesinden geldiğini görebilirsiniz. Canlı etkinlik sırasında sorular da sorabilirsiniz.

“Sektöründe iyi bir konumda yer alan firmanın sahibi Ahmet Bey, satışla ilgili sorunlarının nereden kaynaklandığını tam teşhis edemiyordu. Satış ekipleri mi yeterince potansiyel yaratamıyordu yoksa çoğu potansiyelden haberdar olmalarına rağmen işleri rakiplerine mi kaptırıyorlardı?

Sorunu çözmek için daha ayrıntılı bilgiye sahip olmaları gerekiyordu ancak satış ekiplerinden daha fazla bilgi toplamak için girişimde bulunduğunda, çok tepki çekiyordu. Dışa dönük ve satışa odaklanmış bu ekipler, sistemle uğraşmaya ve bilgi girişi yapmaya direniyorlar, tüm zamanlarını satışa ayırmak ve şirket dışında olmak istiyorlardı. Satış ekiplerinden her görüşmelerini, her teklifi, her teklif sonrası takip adımlarını sisteme girmelerini istemek kolay değildi. Siparişlerin takibi ve ofis isleri de bu nedenle aksamaktaydı.

Ahmet Bey'e bir arkadaşı, aradığı çözümün Microsoft Dynamics CRM olabileceğinden bahsetti. Pek çok firmanın bu yazılım ile satış ekiplerini hiç yormadan, Outlook içinden kendi ajandalarını takip ederken bilgi topladıklarını ve satış etkinliğini fazlasıyla artırdıklarından bahsetti. Ayrıca mobil durumda da sisteme bağlanabilmekte islerini her yerden takip edip bilgi alış-verişi yapabilmekteydiler.”

Gelin Ahmet Bey’in bu sorunu nasıl çözebileceğini beraber görelim.

Microsoft’tan 5 kere üst üste Dynamics CRM MVP(En Değerli Uzman) ödülünü almış olan Barış Kanlıca’nın sunumu 28 Mart 2016 Pazartesi günü saat 09:30’da başlayacak. Sunuma katılmak ve bundan sonraki sunumlardan haberdar olmak ve soru/önerileriniz için info@mawens.com adresine mail atabilirsiniz.

Daha fazla bilgi için http://www.mawens.com adresini ziyaret edebilirsiniz.

Dynamics CRM 2015-2016 Messages Ozelliklerine Takilmadan Islemlerimizi Yapmak

Dynamics CRM icerisinde ozel amacla kullanilan bircok alan bulunmaktadir ve bu alanlarin ozel tipleri vardir. Yani bu alanlara standart .Net tipleri degil de CRM siniflarini parameter olarak atamaktayiz.

Bu duruma verebilecegimiz en unlu ornek ise statecode ve statuscode alanlarinin OptionSet deger almasi ve bunlarin kendilerine ozgu ozel message yapisi ile guncellenebilmesidir. Hatta bu islem oncesi kaydet guncellenemiz gerekiyorsa bu degerleri iceren bir SetStateRequest gondermeniz daha sonra da Update etmemiz gerekmektedir.

Kod uzerinde bu durumu  incelersek; Assign yani birisine kayit atama ve SetStateRequest yani kaydin durumunu guncellemek icin ayri islemler yaptigimizi ve kodun ne kadar uzadigini gorebilirsiniz.

            using (var service = new OrganizationService(crmConnection))

            {

                Entity account = new Entity("account");

                account["accountid"] = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8");

                account["name"] = "Adventure Works Inc.";

                account["creditlimit"] = new Money(100000);

 

                // Service call 1 – standart alanlari guncellestir

                var updateRequest = new UpdateRequest() { Target = account };

                var updateResponse = (UpdateResponse)service.Execute(updateRequest);

 

                // Service call 2 – sahipligi degistir

                var assignRequest = new AssignRequest()

                {

                    Assignee = new EntityReference

                    {

                        LogicalName = "team",

                        Id = new Guid("042d5707-6fe5-e411-80e5-fc15b428fa14")

                    },

 

                    Target = new EntityReference

                    {

                        LogicalName = "account",

                        Id = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8")

                    },

                };

                var assignResponse = (AssignResponse)service.Execute(assignRequest);

 

                // Service call 3 – kaydin durumunu degistir

                var setStateRequest = new SetStateRequest()

                {

                    EntityMoniker = new EntityReference

                    {

                        LogicalName = "account",

                        Id = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8")

                    },

                    State = new OptionSetValue(1), //inactive

                    Status = new OptionSetValue(2) //inactive

                };

                var setStateResponse = (SetStateResponse)service.Execute(setStateRequest);

            }

CRM 2015 update 1’den itibaren ise artik bu durumu daha iyi yonetebilmekteyiz. Cok basit bir update kodu icerisinde bu durumu cok rahat yonetebilmekteyiz. Bu ozellik sayesinde cok daha rahat ve hizli kod yazabilmekteyiz artik.

Bu durum entegrasyon calismalarimizda da bize hiz ve daha guvenli calisan bir kod yapisi sunmaktadir.

            using (var service = new OrganizationService(crmConnection))

            {

                Entity account = new Entity("account");

                account["accountid"] = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8");

                account["name"] = "Adventure Works Inc.";

                account["creditlimit"] = new Money(100000);

                account["statecode"] = new OptionSetValue(1); //inactive

                account["statuscode"] = new OptionSetValue(2); //inactive

                account["ownerid"] = new EntityReference { LogicalName = "team", Id = new Guid("042d5707-6fe5-e411-80e5-fc15b428fa14") };

 

                var request = new UpdateRequest() { Target = account };

                var response = (UpdateResponse)service.Execute(request);

            }

Daha fazla detayi bu adreste bulabilirsiniz: CRM online documentation page