cub-e.net

just coding...

Dynamics CRM'in Özellikleri

Dynamics CRM 2011 kendinden önce gelen sürümlerde de olduğu gibi 3 temel modül üzerine oturmuş bulanmaktadır.

Sales Automation : Bütün satış süreçlerinizi en temel ihtiyaçlarınızdan başlayarak karmaşık yatay ve dikey satış stratejilerine varana kadar kolay ve hızlı bir biçimde yönetmenizi sağlar. Bu bölümde müşteri kavramı üzerine oturtulmuş 360 derecelik görünüm müşterinizin sizinle olan bütün temas noktalarını göz önüne serecek ve doğru zamanda doğru hamleyi yapmanız için size yol gösterecektir.
Daha detaylı bilgiye şu linkten ulaşabilirsiniz : http://crm.dynamics.com/en-us/sales 
Video için ise bu linke bakabilirsiniz : http://uscrmdynamics.cloudapp.net/demos/Dynamics-CRM-2011-Driving-Sales-Productivity/CRM-2011-Driving-Sales-Productivity.html

Marketing : Potansiyel ve mevcut müşterilerinizi elde tutmak için hazırlanmış bu modülde pazarlama kampanyalarınızı, fuarları, pazarlama aktivitelerinizi yönetebilir bunları karşılaştırabilirsiniz. Böylece size en faydalı sonucu üreten pazarlama sürecinizi bulup bunun üzerine yoğunlaşabilirsiniz. Pazarda ürünüzün konumunu ve rakiplerle olan durumlarınızı da gözlemleyip buna göre bir sonraki hamlenizi planlayabilirsniz.
Daha detaylı bilgiye şu linkten ulaşabilirsiniz : http://crm.dynamics.com/en-us/marketing
Video için ise bu linke bakabilirsiniz : http://uscrmdynamics.cloudapp.net/demos/Dynamics-CRM-2011-Maximizing-Marketing-Impact/CRM-2011-Maximizing-Marketing-Impact.html

Customer Service : Müşterilerinize verdiğiniz servis ve hizmetleri kolayca yönetip ölçeklendirebileceğiniz bu bölüm Dynamics CRM içerisindeki birlikte çalışma özelliğini de ön plana çıkarmaktadır. Sahada gezen yada yerleşik servis hizmeti veren bütün firmaların ihtiyaçlarını karşılayacak şekilde dizayn edilmiştir. Böylece hızlı ve seri bir şekilde müşterinize hizmet sunmayı kolaylaştırabilirsiniz. 
Daha detaylı bilgiye şu linkten ulaşabilirsiniz : http://crm.dynamics.com/en-us/customer-service
Video için ise bu linke bakabilirsiniz : http://uscrmdynamics.cloudapp.net/demos/Dynamics-CRM-2011-Optimize-Customer-Experience/CRM-2011-Optimize-Customer-Experience.html

Bu bölümler haricinde bir de CRM Extended özelliğinden söz etmek gerekir. Dynamics CRM'i diğer yazılımlardan ayıran en büyük özelliği genişleyebilir bir mimariye sahip olmasıdır. Kısacası bizler CRM üzerinde iş gereksinimlerinize uygun nesneleri ya da alanları açıp bunu CRM içinde gelen bir parçaymış gibi kullanmanızı sağlayabiliyoruz. Bu özellik sayesinde CRM sadece yukarıda bahsettiğimiz işlevleri yerine getirmenin yanısıra sizin tam işinize uygun bir şekilde şekil değiştirebilmektedir. Bu özellik sayesinde Dynamics CRM'in kullanıldığı bütün firmalarda benzersiz bir hale bürünmekte ve o firmanın ihtiyaçlarına cevap verecek bir hale gelmektedir.
Extending özelliği hakkında daha fazla bilgiye bu linkten ulaşabilirsiniz : http://crm.dynamics.com/en-us/extended-crm

İşte bu özellikleri sayesinde Dynamics CRM firmanızın ihtiyaçlarına göre şekillenir ve işinizi yönetmede size yardımcı olur. Dynamics CRM 2011 en iyi iş platformudur !!!

Dynamics CRM 2011'i diğer platformlarda kullanmak

En çok sorulan soruların başında CRM'i IOS, Android gibi platformlarda kullanabilir miyim gelmekte. Aşağıdaki video linkleri sizlere bunun bir takım ek yazılımlar ile nasıl mümkün olduğunu göstermekte. Ayrıca hiçbir ek yazılama ihtiyaç duymadan da CRM'in mobile formlarını kullanabilirsiniz bunu lütfen gözardı etmeyin. Burada gösterilen uygulamalar ilgili işletim sistemine yüklenerek onların ek özelliklerini kullanmakta ve ayrıca size offline kullanım özelliği de sunmakta. Dediğim gibi amaç sürekli online olmaksa bu yazılımlara ihtiyaç duymadan mobile özelliği zaten kullanabilirsiniz.

Standart gelen crm mobile özelliği :  http://www.youtube.com/watch?v=vBXz5ZbIxvs 

Ipad : http://www.youtube.com/watch?v=b6hQ1oqwcFY

Android : http://www.youtube.com/watch?v=hr8wRUNgU-g

Iphone : http://www.youtube.com/watch?v=CQcfiQe8D-c

Dynamics CRM 2011 JavaScript ile Form İşlemleri

 

Bu webinerimde Dynamics CRM 2011 JavaScript ile Form İşlemleri konusunu anlatıyorum.

29 Aralık 2011 Perşembe günü saat 21:00'da olacak bu webinere herkes davetlidir.

Webiner linki aşağıdaki gibidir.

 

Konu : Dynamics CRM 2011 – JavaScript ile From İşlemleri
Konuşmacı : Barış KANLICA
Zaman : 29.12.2011 21:00
Link : https://www.livemeeting.com/cc/mvp/join?id=MVP4025099&role=attend&pw=wn%2C6r4jrP

 

Dynamics CRM 2011 Workflow(İş Akışı) ve Dialog(İletişim Kutusu)

 

 

Bu webinerimde Dynamics CRM 2011 Workflow(İş Akışı) ve Dialog(İletişim Kutusu) konusunu anlatıyorum.

27 Aralık 2011 Salı günü saat 21:00'da olacak bu webinere herkes davetlidir.

Webiner linki aşağıdaki gibidir.

 

Konu : Dynamics CRM 2011 – Workflow ve Dialog Mimarisi
Konuşmacı : Barış KANLICA
Zaman : 27.12.2011 21:00
Link : https://www.livemeeting.com/cc/mvp/join?id=MVP4025099&role=attend&pw=Bfp%22F73%5ET

 

Dynamics CRM 2011'de Türlerin Kullanımı

 

Microsoft Dynamics CRM 2011 ve Microsoft Dynamics CRM Online'da programlama modeli .NET'in temel türlerini kullanacak şekilde değiştirildi.

Bu tabloda beni en çok şaşırtan ise Customer, Lookup, Owner nesnelerinin artık EntityReference türünden sadece bir değer almaları. CRM'i yeni öğrenler için işler gerçekten kolaylaştırılmış. Artık kod yazarken CRM ile başlayan nesnelerimiz yok.

Aşağıdaki tablo bize Microsoft Dynamics CRM 4.0 ile CRM 2011 arasındaki tür dönüşümünü göstermektedir.

Özellik AdıMicrosoft Dynamics CRM 2011 TürüMicrosoft Dynamics CRM 4.0 Türü

AttributeTypeCode.Boolean

bool ya da System.Boolean

CrmBoolean

AttributeType.CalendarRules

EntityCollection

DynamicEntity[] or calendarrule[]

AttributeType.Customer

EntityReference

Customer

AttributeType.DateTime

System.DateTime

CrmDateTime

AttributeType.Decimal

decimal ya da System.Decimal

CrmDecimal

AttributeType.Double

double ya da System.Double

CrmFloat

AttributeType.Integer

int ya da  System.Integer

CrmNumber

AttributeType.Internal

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz.

AttributeType.Lookup

EntityReference

Lookup

AttributeType.Memo

string ya da System.String 

System.String

AttributeType.Money

 Money

CrmMoney

AttributeType.Owner

EntityReference

Owner

AttributeType.PartyList

 EntityCollection or ActivityParty[]

activityparty[] or DynamicEntity []

AttributeType.Picklist

OptionSetValue

Picklist

AttributeType.PrimaryKey

System.Guid

Key

AttributeType.String

System.String

System.String

AttributeType.State

OptionSetValue yada oluşturulan enumeration kullanılmalı

EntityNameStateInfo

AttributeType.Status

OptionSetValue ya da int

Status

AttributeType.Uniqueidentifier

System.Guid

UniqueIdentifier

AttributeType.Virtual

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz


Eski TürYeni Tür

CrmAttributeType Class (MetadataService)

Microsoft.Xrm.Sdk.Metadata.AttributeTypeCode

Moniker Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

SecurityPrincipal Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

OptionSetValue

OptionSetValue’a değer atamak için ilk önce OptionSetValue türünden bir nesne oluşturmanız gerekmektedir.  Burada dikkat çekmek istediğim konu ise eğer state alanı ile çalışacaksanız (yani firma için aktif/pasif, teklif için açık/kazanıldı/kaybedildi gibi) early-bound sınıflarda bunlar için mutlaka bir enumaration oluşturulmakta. Ama late bound sınıflarda bu durumu programcı yönetmektedir.

Örnek olarak adres üzerindeki bir optionset alana değer atama aşağıdaki şekilde olmaktadır;

OptionSetValue osv = new OptionSetValue(1);

contact.Attributes["address1_freighttermscode"] = osv;

 

EntityReference

CRM sisteminde iki entity’yi birbirine bağlamak için lookup nesnesini kullanmak zorundayız. Lookup’lar üzerinde programatik işlem yapabilmek için EntityReference nesnesini kullanmaktayız. Bu nesneye Lookup alana reference vermek istemiz nesnenin türü ve Id’sini vermemiz gerekmektedir.

Aşağıdaki örnekte parentAccountId atama yapılacak nesnenin guid cinsinden Id’si olmalı;

EntityReference parentaccountid = new EntityReference("account", parentAccountId));

accountEntity.Attributes["parentaccountid"] = parentaccountid;

ioService.Update(accountEntity);

Null Değer Atama

CRM 4.0’dan farklı olarak .Net Type türleri kullanıldığı için null değer atama işlemi artık sadece alana değer vermekten ibaret oldu. İşte birkaç örnek;

Entity.IndustryCode = null;

Entity.AccountId = Guid.Empty;

Entity.AccountNumber ="";

Entity.Address1_Country = String.Empty;


Bir makalemizin daha sonu geldik :)

 

CrmSvcUtil.exe ile Early-Bound Sınıflar Oluşturmak

 

Early-Bound tiplerle çalışabilmek için obje modelini bilmeye ihtiyacımız vardır. İşte CrmSvcUtil.exe bize bu kodu üretecek olan programdır.

Program early-bound .Net Framework sınıflarını ve entity modellerini Microsoft Dynamics CRM 2011 içerisinden almakta ve bize bir .cs dosyası halinde vermektedir. Bu noktadan sonra üretilen bu .cs dosyasını ya Visual Studio ile kodunuzun bir parçası olarak kullanabilir ya da bir dll haline getirip projenize referans olarak ekleyebilirsiniz. Bu sayede Visual Studio içerisinde intelli-sense özelliği ile kod geliştirebilirsiniz.

Eğer isterseniz uygulama her bir entity için ayrı bir partial class’da oluşturabilir.

CRM’in sdk’sında bin klasörü içerisinde bulabileceğiniz bu aracı command prompt ile çalıştırabilirsiniz.
crmsvcutil.exe

/url: buraya Organization Service’in adresi gelecek

/out: çıktının hangi dosyaya olacağı bilgisi

/username : servise bağlanılacak kullanıcı adı

/şifre : servise bağlanılacak şifre

Eğer CRM’de zaten kullanıcı olan bir kişi ile oturum açtıysanız k.adı ve şifre belirtmenize gerek yok.

Bu şekilde gerekli cümleyi command promt’a yazdığınızda yukarıdaki ekranda olduğu gibi .cs dosyanızı alabilirsiniz.

 

Ek olarak aşağıdaki parametreleri de verebilirsiniz;

/serviceContextName: Eğer .cs dosyanızı LINQ Service Context vasıtasıyla LINQ sorgularını da desteklemesini istiyorsanız bu özelliği kullanmalısınız. Buraya türetilecek servis context’inin adını girmelisiniz örneğin “CrmDataContext” gibi.

 

Burada ek olarak şunu da belirtmeliyim ki bu komutu varsayalında ben hep kullanıyorum. Bu komutu kullandığımız zaman  2 şeyi unutmamız gerekmekte;

1.       Bir OrganizationContext oluşmakta artık onu kullanmamız gerekmekte, aşağıdaki örnekte olduğu gibi;

CrmDataContext orgContext = new CrmDataContext(ServiseBaglan());

2.      
 
Crm Servis çağrısına şu özelliği eklememiz gerekmekte;


_serviceproxy.EnableProxyTypes();


Bu iki maddenin detayını LINQ ile veri  sorgulama makalemde daha detaylı anlatacağım.

/namespace : Varsayılanda .cs dosyası bir namespace olmadan türetilir bu özelliği kullanarak kodu bir namespace altında toplayabilirsiniz.

 /language : CrmSvcUtil.exe varsayılanda C# kodu üretil eğer VB kodu üretmek istiyorsanız bu özelliğe VB değerini vermeniz gerekmekte.

Bu tool aşağıdaki örnekte olduğu gibi bir kod üretmektedir;

 

    /// <summary>

    /// Bir müşteriyi veya potansiyel müşteriyi temsil eden işletme. Ticari işlemlerde faturalanan şirket.

    /// </summary>

    [System.Runtime.Serialization.DataContractAttribute()]

    [Microsoft.Xrm.Sdk.Client.EntityLogicalNameAttribute("account")]

    [System.CodeDom.Compiler.GeneratedCodeAttribute("CrmSvcUtil", "5.0.9688.1244")]

    public partial class Account : Microsoft.Xrm.Sdk.Entity, System.ComponentModel.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged

    {

 

        /// <summary>

        /// Default Constructor.

        /// </summary>

        public Account() :

            base(EntityLogicalName)

        {

        }

 

        public const string EntityLogicalName = "account";

 

        public const int EntityTypeCode = 1;

 

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

 

        public event System.ComponentModel.PropertyChangingEventHandler PropertyChanging;

 

        private void OnPropertyChanged(string propertyName)

        {

            if ((this.PropertyChanged != null))

            {

                this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));

            }

        }

 

 

 

Yazgeliştir Zirvesi - Haziran 2011

Benim de Dynamics CRM 2011 Yazılım Platformu konusuyla konuşmacı olacağım etkinliğe hepinizi beklerim. Lütfen mümkün olduğu kadar çok ortamda duyurusunu yapalım.

Yazgeliştir etkinliklerinden Yazgeliştir Zirve'nin ikincisi 8 Haziran Çarşamba günü Microsoft İstanbul ofisinde gerçekleştirilecek. Etkinlikte Microsoft Regional Director (RD), Microsoft Most Valuable Professional (MVP) ve Yazgeliştir editörleri konuşmacı olacak. Microsoft’un çeşitli yazılım geliştirme ürün ve araçları ile ilgili seminerlere katılabilir, Windows Phone 7, Windows Embedded, Windows Azure gibi tüm dünyanın yakından takip ettiği konuları ve son bir sene içinde Microsoft teknolojilerinde olan yenilikleri konunun uzmanlarından öğrenebilirsiniz. Etkinlikte aynı zamanda Yazgeliştir editörleri ile bir araya gelip kendilerine danışmak istediğiniz konularda sorular sorabilirsiniz. Etkinlik ile ilgili detaylı bilgiye zirve.yazgelistir.com adresinden ulaşabilirsiniz. 
Zirveye 1 Haziran'da kayıt olabilirsiniz.

Early ve Late Binding Arasındaki Farklar

Dynamics CRM 2011 içerisinde programcılar kendilerine birden fazla programlama biçimi seçebilirler. Dynamics CRM 4.0’da  WSDL kullanarak early-bound tipleri ve Dynamics Entity sınıflarını kullanarak da late-bound programlama yapabilirler.Plug-in ve Workflow yazabilmek için late-bound tipleri kullanmamız gerekmektedir. Bunlar yeni programlama modelleri ile değiştiler.

Dynamics CRM 4.0’da entity sınıflarının duruşu aşağıdaki şekildeki gibiydi;

Şimdi ise Dynamics CRM 2011’de bu yapı şu şekilde değişti;

DynamicEntity sınıfı artık Entity sınıfı isimli bir sınıfla yer değiştirdi. Bunun anlamı ise build time yani early bound tiplerle, runtime yani late bound tiplerin artık tek sınıftan türemesinin gerçekleşmiş olduğudur.

Dynamics CRM 2011’de artık WSDL’e direkt ulaşamıyoruz. Daha önceki makalemde de anlattığım gibi 2 tane dll’i referans olarak eklemek ve servise bağlantı kurmak gerekmektedir.

Late-Bound olarak isimlendiren mimaride siz Entity sınıfından bir nesne türetmeli ve bu nesnenin attribute collection’da da değerlere yer vermelisiniz. Tabii burada değer alanlarının crm içerisindeki logical name’lerini kesinlikle bilmeniz gerekmektedir.

Aşağıdaki örnek bize late-bindig yapısının nasıl işlediğini gösterecektir;


Entity
accountEntity = new Entity("account");

accountEntity["name"] = "Deneme Firmasi";

accountEntity["emailaddress1"] = "info@deneme.com";
Guid accountID = ioService.Create(accountEntity);


Entity sınıfını kullanmaya başladığımız zaman late-binding’e giriş yapmış oluyoruz. Entity türünden oluşturduğumuz nesneye biz Account türünden bilgileri içine dolduracağız diyoruz. Contact, Opportunity gibi CRM içerisindeki bütün nesneleri bu şekilde oluşturabiliriz.

Daha sonra ise alanların logical name’lerini vererek bunların değerleri veriyoruz. Burada .net tabanlı türleri kullanabilmekteyiz. CRM 4.0’da CrmBoolean, CrmNumber gibi türlere çeviriler yaparak nesnelerin içini doldururken artık buna ihtiyacımız bulunmamaktadır.

ioService isimli WCF tabanlı servisimizden türemiş nesnenin Create Metodunu kullanarak nesnemizi CRM içerisinde bir kayıt olarak oluşturuyoruz.




Early-Bound olarak isimlendirilen mimaride de ise CrmSvcUtil.exe aracını kullanarak bir OrganizationServiceContext türetmelisiniz. Daha sonra ise bu aracın türettiği nesneleri kullanabilir hale gelebilirsiniz. Tabii burada her bir nesnenin şema isimleriyle hareket ettiğimiz unutulmamalıdır.

Aşağıdaki örnek bize early-binding yapısının nasıl işlediğini gösterecektir;

CrmDataContext orgContext = new CrmDataContext(ServiseBaglan());

var contact = new Contact()

{

    FirstName = "Alan",

    LastName = "Smith"

};

orgContext.AddObject(contact);

orgContext.SaveChanges();


Burada ServiseBaglan() daha önceki makelemde belirttiğim gibi IorganizationService Interface’inden türemiş bir sınıfı teşkil  etmektedir. Yani CRM’in WCF servisine hazır ve açık bir bağlantıdır.

Contact ise CRM içerisinde kişiler entity’sidir, Account,Lead,Invoice,Quote gibi daha bir çok entity bulunmaktadır.

Firstname ve Lastname ise kişinin adı ve soyadı için değerleri temsil etmektedir  ve bu bilgi OrganizationContext’ten gelmektedir. Bir sonraki yazında CrmDataContext isimli bu OrganizationContext’in CrmSvcUtil.exe aracılığıyla nasıl oluşturulduğu göstereceğim.

Daha sonra ise bu doldurduğumuz contact nesnesini OrganizationContext’e teslim ediyoruz ve işlem yapılması için SaveChanges() metodumuzu çağırıyoruz.

Farklılıkları ise şu şekilde sıralayabiliriz;

·         Early-Bound Entity Sınıflarının en büyük avantajı compile time da bize bütün hataları göstermesidir. Yani uygulamamızı yazarken ya da derlerken türler arası uyumsuzluk ya da yanlış değer atama gibi bütün yanlışlıklarımızı gözler önüne sermektedir. 

·         CrmSvcUtil bize tüm CRM mimarisini örneklerken bütün nesneleri ve onun ilişkilerini de getirmektedir. Böylece nesne dönüşümleri ve tür güvenliği de sağlanmış olmaktadır.

·         Visual Studio içerisinde inteli sense özelliğini kullanmamızı sağlar.

·         Dynamics CRM 4.0’da WSDL ile çalışan kişiler bu yeni yapıda hiçbir farklılık hissetmeyeceklerdir.


Bir sonraki makalede görüşmek dileğiyle :)

 

Dynamics CRM 2011 Servis Mimarisi

 

Dynamics CRM üzerinde uygulama geliştirebileceğiniz çok güçlü bir mimari ile gelmektedir. Bu mimarinin temel yapı taşı ise WCF servisleridir. Bu yazımda sizlere CRM'in temel web servisleri olan Discovery ve Organization Servislerinin yapısını ve ne işe yaradıklarını anlatacağım.

CRM için kod geliştirirken her ne kadar sdk'nın içinden çıkan dll'leri kullansak da bu dll'ler vasıtasıyla ilk önce servis bağlantısı oluşturmamız gerekmektedir.  Yani verilere ulaşmak ve veri yazmak için WCF servislerini kullanmak zorundayız. Bu servislerle daha hızlı ve güvenli bir şekilde CRM platformuna entegre olmamızı sağlamaktadır.

WCF standartlaşmış bir teknoloji olduğu için biz yazılım geliştiricilere yeni özellikler sunmakta ve sürekli kendi içerisinde gelişmektedir. Dynamics CRM yapısında entity ve attribute katmanlı bir mimari bulunmaktadır. Yani biz CRM'in Business Logic katmanına müdahele edip yazılımlarımızı onunla entegre hale getirmekteyiz. Temel olarak nesne katmanı Entity isimli nesneden türemiştir. late-bound türlerde bu nesneyi sıklıkla kullanmaktayız. Early-bound olarak program geliştirme metodolojisini tercih edersek Entity class'ı ile işimiz olmamaktadır ama arka planda bütün nesnelerin bu class'dan türediği unutulmamalıdır. Bu konuya aşağıda bir örnekle tekrar değineceğim. CRM servislerine OrganizationServiceProxy ve DiscoveryServiceProxy sınıflarıyla bağlanmaktayız. Aşağıdaki kod bize bunu göstermektedir;

using (OrganizationServiceProxy _serviceProxy =
    new OrganizationServiceProxy(organizationUri, homeRealmUri, userCredentials, deviceCredentials)) ;

Discovery Servis

Dynamics Dynamics CRM 2011 multi-tenant bir mimaridedir. Yani tek bir uygulama birden fazla organizasyonu içerisinde barındırmaktadır. Yazılımcı olarak birden fazla organizasyon arasında geçiş yapmamız gerekiyorsa sistemde hangi organizyonlar olduğunu sorgulama işini Discovery servis ile yapmamız gerekmektedir. Bu servis yazma okuma işlemlerinin yapılacağı ana servise bağlanmamıza yardımcı olacak ve organizasyonların bilgisini bize döndürecektir. Aşağıdaki kod bize bu servise nasıl bağlanacağımızı ve organizasyonların bilgisine nasıl ulaşacağımızı göstermektedir.

Uri dInfo = new Uri("http://192.168.5.102/XRMServices/2011/Discovery.svc");
ClientCredentials clientcred = new ClientCredentials();
DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(dInfo, null, clientcred, null);
dsp.Authenticate();
RetrieveOrganizationsRequest
rosreq = new RetrieveOrganizationsRequest();
RetrieveOrganizationsResponse
r = (RetrieveOrganizationsResponse)dsp.Execute(rosreq);
foreach
(OrganizationDetail o in r.Details)
{
      Console.WriteLine("Organizasyon Adı : " + o.FriendlyName);
}
Console
.ReadLine();

Bu kodla discovery servise bağlandıktan sonra ClientCredentials'ı kullanarak hali hazırda oturum açmış kullancının bilgisini sisteme göndermekteyiz. Ama her zaman bunu kullanmak istemeyebiliriz yani başka bir kullanıcı adı ve şifre ile sisteme girmek istediğimizde ClientCredentials'a kullanıcı adı, şifre bilgilerini verebiliriz.

clientcred.Windows.ClientCredential = new System.Net.NetworkCredential("kullanici adi", "sifre", "domain");

Yukarıdaki kodun çalışabilmesi için System.ServiceModel.Description,System.Runtime.Seriliazation, Microsoft.Xrm.Sdk.Client ve Microsoft.Xrm.Sdk dll'lerinin referanslara eklenmiş olduğundan emin olun. Ayrıca uygulamayı .Net Framework 4.0'da derlemek gerekiyor.

Organization Servis

Dynamics CRM 2011'in ana web servisi Organization Servis'tir. Bu servis içerisinde entity instance'ları üzerinde işlem yapabileceğimiz 6 metod ve execute metodu bulunmaktadır. CRM Servis sınıfını oluşturabilmek için Organization Service Proxy'nin bir instance'ını oluşturmamız gerekmekte. Daha sonrasında ise Organization Servis sınıfını bunu göre ayarlayacağız.

Uri dInfo = new Uri("http://192.168.5.102/XRMServices/2011/Organization.svc");
ClientCredentials
clientcred = new ClientCredentials();
clientcred.Windows.ClientCredential = new System.Net.NetworkCredential("kullanici adi", "sifre", "domain";
OrganizationServiceProxy
orgService = new OrganizationServiceProxy(dInfo, null, clientcred, null);
orgService.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService
ioService = (IOrganizationService)orgService;

Yukarıdaki kodun çalışabilmesi için System.ServiceModel.Description, Microsoft.Xrm.Sdk ve Microsoft.Xrm.Sdk.Proxy dll'lerinin referanslara eklenmiş olduğundan emin olun. Ayrıca uygulamayı .Net Framework 4.0'da derlemek gerekiyor. Oluşturduğumuz bu servisi daha sonra programımızın ilerleyen bölümlerinde çağırıp işlemler yapacağız.

Tabi burada belirtilmesi gereken bir konu da işlem yapmak istediğiniz nesnenin üzerinde yetkilerinizin olmasıdır. Bir kayıt oluşturabilmek için oluşturma yetkisine sahip olmanız gerekmektedir. Sadece okuma yetkisiyle bir kayıt oluşturamazsınız. Bir sonraki yazımda sizlere entity mimarisi ve yazma okuma işlemlerini anlatacağım.

 

 

 

Microsoft Bilişim Zirvesi 2011

11 Mart 2011 tarihinde İstanbul Kongre Merkezinde gerçekleşecek olan Microsoft Türkiye Bilişim Zirvesi ile tüm bilişimciler yeni bir deneyim ve paylaşım imkanı ile buluşturuluyor.

Microsoft iş ortaklarının deneyim ve başarı hikayelerinin de sunulacağı etkinlikte; Geleceğin Çalışma Dünyası, Web Platformu, Dinamik Veri Platformu, İş Kritik Uygulamaları, Uygulama Platformu ve Bulut Bilişim gibi konu başlıkları ile toplam 11 panel sunumu olacak.

Etkinliğe bu adresten kayıt olabilirsiniz : https://msevents.microsoft.com/cui/EventDetail.aspx?culture=tr-TR&EventID=1032474048&IO=l1KCS/dGn2P/FbGk97ziug%3d%3d