cub-e.net

just coding...

Müşterinin Kalbine Giden Yol Teknolojiden Geçer - Bolum 2

Çözüm nedir peki…

Amacımız basit aslında “Müşterilerin tercih ettiği markaları yaratan ve vazgeçilmez olabilmek.” Bu durumda ne yapmak gerekiyor? İşte bu soruya iki yönden bakarak farklı cevaplar vermek gerekiyor.

1. İnternet’ten doğru müşteri kitlesine ulaşın : Websiteniz eğer arama motorlarında (google, yandex vb.) üst sıralarda yer almıyorsa size ulaşamayacaklardır. O zaman siteniz için SEO(Search Engine Optimization) çalışmaları yapmak gerekmektedir. SEO çalışmaları ile siteniz uygun kelimeler için üst sıralarda yer alacaktır. Bunun haricinde sitenizin facebook ve twitter’da yer alması ve mümkünse buralarda  doğru kitleye uygun reklam vermeniz çok önemli olacaktır.

Ek olarak yazımın başında artan mobil cihaz ve tablet kullanıma örnekler vermiştim. Bu durumda websitemizin bütün cihaz ve browserlardan(internet explorer, chrome vb..) düzgün görüntülenecek şekilde ayarlanması gerekmektedir.

 

Eğer işiniz için uygun ise iOS, Android ve Windows Phone gibi tablet ve cep telefonlarında çalışan işletim sistemlerine uygun birer uygulama yazdırmanız da gerekebilir. Yine yapılan araştırmalarda mobil uygulamaların web sitelerinden daha fazla kullanıldığı ve bağımlılık yaptığı da bir gerçek.

 

2. İşinizi yönetmek için bütünleşik sistemler kullanın : Müşteriler cep telefonları, tabletler vb.. cihazlar ve yazılımları kullanıyorlar da siz bundan farklı mısınız? Hangi ürün ya da hizmeti ürettiğiniz önemsiz sonuçta siz de işinizi yönetmek için bunlara mecbursunuz. Bu durumda sizin işinizi yönetmek için kullandığınız yazılımın da iş yapmak için kullandığınız bütün enstrümanlara erişmesi ve en önemlisi bunu cihaz, zaman ve mekan fark etmeksizin sizin kullanımıza sunmalı.

 

Bu noktada size tam da bütün bunları sunabilen bir yazılımı size tanıtacağım;

Microsoft Dynamics CRM. Yazılım 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.

 

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.

 

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.

 

Extend : 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.

Harvard Business School’dan Prof.Dr. Rajiv Lal diyor ki: “CRM programları uygulanırken, yalnızca sistemler değil, şirket içi akışlar, müşteriye dair süreçler ve teşvik politikaları da değişmeli; çünkü müşteri merkezlilik şirketin yalnızca teknolojik ya da satış odaklı gücü değil, kültürel olgusudur. Kültürel değişimi sağlamadan müşteri bağlılığını garanti edemezsiniz.”

 

İşte bu özellikleri sayesinde Dynamics CRM firmanızın ihtiyaçlarına göre şekillenir ve işinizi yönetmede size yardımcı olur ve birlikte çalışmayı arttırarak Prof.Dr. Rajiv Lal’ın dediği gibi kültürel değişimi sağlar.

 

 

grafik ve rakamlar için kaynak http://www.webrazzi.com

Müşterinin Kalbine Giden Yol Teknolojiden Geçer - Bolum 1

Bizde meşhur bir atasözü vardır “erkeğin kalbine giden yol midesinden geçer” derler. Günümüzde bu sözü iş dünyasına odakladığımızda müşterinin kalbine giden yolda teknolojisinin olması bizi hiç de şaşırtmamalı aslında.

Rakamlar yalan söylemez…

Apple’ın 10 Eylül’de tatnıttığı  iPhone 5c ve iPhone 5s  bir haftada şimdiye kadar bütün iPhone’ların ilk hafta satışlarını geçti. Apple yaptığı açıklama ile bir haftada 9 milyon iPhone 5C ve iPhone 5S satıldığını duyurdu. iPhone 5 ile karşılaştırdığımızda geçen sene yine Eylül ayında tanıtılan iPhone 5 ilk haftasında 5 milyon rakamına ulaşmıştı.

Geçen sene tek ürünle 5 milyonu yakalamasına karşılık 2 ürünle toplamda 9 milyon satışa ulaşmış oldu.

Mobil kullanım oranları her geçen gün artıyor ve yapılan araştırmalar daha uzun süre bu büyümenin devam edeceğini öngörüyor. IDC‘nin yayınladığı rapora göre tablet bilgisayarlar, kişisel bilgisayarların yıllık üretimini 2015 sonu itibariyle geçecek.

Akıllı telefonlar ve tabletlerin bulunduğu mobil cihazlarda geçen yıl %30.3 büyüme yakalamasına göre bu yıl hafif bir gerileme ile %27.8 büyüme bekleniyor. Buna karşın PC üretiminin 2013 yılı itibari ile %10 düşeceği tahmin ediliyor. Akıllı telefonların anormal büyümesini sürdüreceği ve 1.4 milyar akıllı telefonun üretiminin gerçekleşeceği de beklentiler arasında. Dikkat çeken bilgilerden birisi de tabletlerin en büyük rakibinin yine mobil bir cihaz olan akıllı telefonların büyüyen ekranları olması.

Şirket websitesini yaptık herşey bitti…

Hal böyle olunca oturup düşünmek gerekiyor, peki biz işimizi teknolojiye uyarlayabildik mi? ya da internet ve sosyal medyanın gücünü doğru kullanabiliyor muyuz? İşte bu noktada en çok yapılan hata şirket web sitemizi yaptık herşey bitti şeklindeki yanlış düşüncede yatmakta. Türkiye’den örnek verecek olursak IAB Türkiye’nin sunduğu rapora göre ‘display’, arama raporu, mobil reklam, ilan, e-posta, oyun içi reklam gibi oluşan internet reklam yatırımları toplamına göre 2013’ün ilk 6 ayında internet reklam pazarı hacmi yarım milyar TL’yi aşarak 541.8 milyon TL olarak gerçekleşti.

Müşterileriniz ya da Bayileriniz Size Sadık mı?

Murat Bey babasından kalan firmasını büyütmüş, hatta yurtdışındaki birtakım markaların Türkiye dağıtıcılıklarını (distribütörlüklerini) dahi almıştı. Murat Beyin firması, piyasanın en güçlü firmalarından biri olmasına rağmen, ürünlerinin satış modeli yüzünden sıkıntılar yaşıyordu. Gezici bir satış ekibi hem kendi mağazalarına hem de işletme hakkı (franchising) verdikleri mağazalara gidiyor, yeni ürünlerini tanıtıyor, satış yapmaya çalışıyordu. Bu ekip gününün büyük bir bölümünü ofis dışında geçirdiği, sürekli dolaştığı için kendilerine şirket cep telefonları verilmişti. Böylece ekip üyeleri şirkete varmadan, şirketi arayarak yeni siparişleri kolayca bildiriyorlardı. Ama bu durum zaman zaman karışıklıklara neden oluyordu: Satış ekibinin üyeleri birbirinden habersiz olarak, aynı gün içerisinde, aynı mağazalara gidiyor, yanlış siparişler geçiyorlardı.

Durumun diğer vahim tarafı da bu mağazaların aynı zamanda rakip markaların ürünlerini de satmasıydı. Murat Beyin satış ekibinin, mağazalarda kendi ürünlerini ön plana çıkarmak için çok uğraşmaları, mağaza çalışanlarına veya sahiplerine çok dil dökmeleri gerekiyordu. Bu da satış ekibini yoruyor, satışa yönelik verimlerini önemli ölçüde düşürüyordu.

Aslında Murat Beyin müşterisi hem işletme hakkı (franchising) verdiği mağazalar hem de ürünü kullanan nihai tüketicilerdi. Fakat Murat Bey bir türlü gerçek müşterileri olan nihai tüketiciye ulaşamıyordu. Çünkü mağazalar bu bilgileri onlarla paylaşmıyor, onları sadece kendi müşterileri olarak görüyordu. Murat Bey’in firması da elinde nihai tüketici bilgisi olmadığı için gerekli kampanya ve duyuruları hem gerçek hem de potansiyel müşterilerine istediği gibi duyuramıyordu.

Tüm bunlara ek olarak satış ekibinin rapor, harcırah hesaplanması, satış bölgesi yönetimi gibi sorunları da gittikçe büyüyordu.

Acaba Murat Bey mağazalarda kendi ürünlerini ön plana nasıl çıkartacaktı? Mağaza sahiplerinin vermediği nihai tüketicilerin bilgilerine nasıl ulaşacaktı? Bunları yaparken satış ekibinin işini düzenli, kolay ve hızlı bir şekilde yapmasını  nasıl sağlayacaktı? Eğer müşteri bilgisini elde ederse onlara yeni kampanyalarını, promosyonlarını hangi yollarla duyuracaktı? Bu kampanyaların maliyetini ne şekilde hesaplamayı düşünüyordu?

Tüm bu sorunlarını Microsoft’la paylaşan Murat Bey, Microsoft Dynamics CRM İş Platformunun bütün bu sıkıntıların üstesinden kolayca gelebileceğini öğrendi. Üstelik hem Web hem de Outlook üzerinden çalışabilen bu yazılım, bütün bu iş yükünü üstüne almanın yanında, sadakat yönetim programı çerçevesinde müşterilerin firmaya sadık kalmalarını da sağlıyordu.

Murat Beye OMERD firmasından Barış Kanl��ca tarafından yapılacak demoyu siz de  izlemek istiyorsanız 13 Temmuz saat 15.30’da gerçekleştireceğimiz web seminerimize katılabilir, Microsoft Dynamics CRM İş Platformunun bu sıkıntıların üstesinden nasıl kolayca geldiğine tanık olabilirsiniz.

Bu linki kullanarak kayıt olabilirsiniz : https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032421180&EventCategory=4&culture=tr-TR&CountryCode=TR

MS CRM Customer Experience Video - MS CRM Müşteri Deneyimleri Videosu

İşte size Microsoft Dynamics CRM 4.0'ın uluslararası büyük firmalar tarafından da başarıyla kullanıldığının mükemmel bir örneği. Bu video Nortel Networks,Renault,Dallas Cowboys ve Mitsubishi gibi farklı sektörlerdeki uluslararası firmaların CRM kullanarak nasıl ölçeklenebilir ve müşteri odaklı çalışma biçimini benimsediklerini bize gösteriyor.

----

This video show to us how is successfuly adapted and using Microsoft Dynamics CRM in international big companies. Nortel Networks,Renault,Dallas Cowboys and Mitsubishi Directors tell to us their Dynamics CRM Experiences.

 
Video: Microsoft Dynamics CRM Customer Experience

CRM Terimleri


Aktif Sadakat (Active Loyalty):
Belli bir zaman aralığında müşterinin satın alma, temasta bulunma ve işlem yapma aktivitelerini tekrarlaması. Müşterinin en son ne zaman temasta bulunduğu ve temasta bulunma sıklığı gibi ölçüler analize baz teşkil eder.

Analitik CRM (Analytical CRM): Operasyonlardan elde edilen verinin iş performansını ölçmek için analiz edilmesi.

Bilgisayar-Telefon Entegrasyonu (Computer Telephony Integration - CTI): Bilgisayar ve bilgisayar uygulamalarının dijital telefon hatları üzerinden gelen bilgileri kullanmasına yarayan teknoloji
 
Birebir Pazarlama (One to One Marketing): Müşterinin davranış şekil ve tercihlerine göre şekillendirilebilen pazarlama anlayışı. Müşteriye, satış noktalarından kişiselleştirilmiş ürün ve servislerin dağıtılması.
 
Çapraz Satış (Cross Selling): Müşteriye genel satın alma eğilimini analiz ederek birbiriyle ilişkili ürün veya hizmetleri satma
  
Çok Boyutlu Analiz (Multi-Dimensional Analysis): Veri üzerinde, her biri farklı bir boyuta karşılık gelen farklı ilişkileri göz önünde bulundurarak yapılan bilgi analizi.
  
Doğrudan Pazarlama (Direct Marketing): Satıcının mesajını doğrudan, potansiyel müşteri olarak tanımlanan kitleye sunan; posta, e. posta veya tele pazarlama gibi yöntemleri içeren teknik.
  
E-CRM: Web kanallarının CRM stratejisinin bir parçası olarak kullanılması
  
En Çok Büyüyebilir Müşteri Grubu (Most Growable Customers - MGC): Firma için stratejik değeri gerçek değerini geçebilecek müşteri tipi. Bu tür müşteriler çapraz satış ve etkin maliyet yönetimi ile firma için en karlı müşteri haline dönüştürülebilir.
 
En Değerli Müşteri Grubu (Most Valuable Customers - MVC): Firma için gerçek değeri en yüksek, en karlı, en bağlı ve firma ile en fazla işbirliği yapan yada yapmak isteyen müşteri tipi.
  
Gerçek Müşteri Değeri (Actual Value, Lifetime Value - LTV): Müşterinin gelecekte firmaya sağlayacağı kar akışının bugünkü değeri
 
İnteraktif Ses Tanıma (Interactive Voice Response - IVR): Kullanıcıdan genellikle DTMF halinde gelen veriye yanıt olarak önceden kaydedilmiş uygun mesajı telefon üzerinden geri bildiren sistemler
  
Kampanya Yönetimi (Campaign Management): Pazarlama iletişim kanallarının yönetimi
  
Kanal Yönetimi (Channel Management): Efektif dağıtım kanallarının geliştirilmesi ve yönetimi
 
Kişiselleştirme (Personalization) : Sunulan ürün yada hizmetin müşterinin faydası yönünde farklılaştırılması.
 
Müşterek CRM (Collaborative CRM): Çeşitli kanallarla müşteriden toplanan bilginin müşteri memnuniyetini artırmak ve müşteriyle olan ilişkileri iyileştirmek için kullanılması. Yeni ürün geliştirme sürecine müşterinin katılması gibi.
  
Müşteri Bağlılığı (Customer Loyalty): Müşterinin tüm rekabetçi etkilere ne ölçüde direndiği ve firmanın ürün ve hizmetlerini kullanmakta ne kadar kararlılık gösterdiği
 
Müşteri Bilgi Sistemleri (Customer Information Systems): Müşterilerin satın alma tercihleri hakkında firmaya bilgi sağlamak, potansiyel müşterileri tanımak, mevcut olanların kalıcılığını sağlamak ve hangi müşteri grubunun hangi ürün ve hizmete yönlendirilmesi gerektiğini anlayabilmek amacıyla kullanılan sistemler.
 
Müşteri Değerlemesi (Customer Valuation): Müşterinin firma açısından cari değeri, gelecekteki değeri ve stratejik (potansiyel) değerinden oluşan toplam değeri
 
Müşteri Etkileşim Noktaları (Customer Interaction Points): Müşterinin organizasyonla temas ettiği herhangi bir nokta
 
Müşteri Farklılaştırılması (Customer Differentiation) : Birebir müşteri stratejilerinin uygulanabilmesi için her müşterinin hem davranış biçimi, hem de finansal anlamda firma açısından farklı görülmesi ve uygun aksiyonun alınması
 
Müşteri Gruplama (Customer Segmentation) : Pazarın benzer özelliklere sahip müşteri gruplarına bölünmesi
 
Müşteri İlişkileri Yönetimi (Customer Relationship Management - CRM): Müşterilerle daha güçlü ve uzun vadede firma için kârlı ilişkiler geliştirmek amacıyla, onların ihtiyaç ve davranışlarını daha iyi anlamak için kullanılan strateji
 
Müşteri Odaklı Bakış Açısı (Customer-Centric View): Müşteriyi etkileyen herhangi bir kararda müşterinin istek ve ihtiyaçlarını temel kriter olarak alan yaklaşım
 
Müşteriyi Elde Tutma (Customer Retention): Uzun vadede müşteri sadakatini sağlamayı hedefleyen pazarlama stratejileri. Müşterileri elde tutmanın maliyeti yeni bir müşteri kazanmaktan her zaman daha azdır.
 
Müşteri Yaşam Süresi Değeri (Customer Lifetime Value): Müşterinin organizasyonla ilişkide olduğu süre boyunca organizasyona kazandıracağı tahmin edilen nakit akışı
 
Müşterinin Stratejik Değeri (Strategic Value): Müşterinin uygun stratejiler uygulandığında firmaya sağlayacağı gerçek değerinin ötesinde potansiyel olarak sağlayabileceği değer.
 
Otomatik Çağrı Dağıtıcı (Automatic Call Distributor - ACD): Genellikle büyük çağrı merkezlerinde kullanılan ve gelen çağrıları uygun olan müşteri temsilcisine otomatik olarak yönlendiren sistem
 
Otomatik Numara Tanıma (Automated Number Identification - ANI): Gelen çağrının telefon numarasını alıcıya aktararak arayan müşterinin tanınmasını sağlayan özellik
 
Öğrenilen İlişki (Learning Relationship) : Firma ve müşteri arasında kurulan ve her türlü müşteri verisinin müşteri bağlılığını arttıracak şekilde faydalı bilgiye dönüştürülüp firmanın gereken aksiyonları aldığı ve sürekliliğini sağladığı anlayış
 
Pareto İlkesi (Pareto Principle): Ekonomide genel bir ilkedir. Firma gelirlerine uygulandığı zaman; firmaların gelirlerinin %80'ini, müşterilerinin % 20'sinin sağladığını ifade eder.

Pasif Sadakat (Passive Loyalty): Müşterinin organizasyonla uzun bir süre işlem yapmaması veya daha iyi bir alternatif bulunmadığı için organizasyonla ilişkisini sürdürmesi
 
Veri Ambarı (Data Warehouse): Çeşitli veri tabanlarından çekilerek biçimlendirilen ve karar vermede kullanılan bilgi deposu
 
Veri Madenciliği (Data Mining): İstatistik veya yapay zeka yardımıyla verilerin analiz edilerek aralarında yeni bağlantılar kurulmaya çalışılması
 
Veri Modelleri (Data Models): Bir şekilde ilişkili olan firmanın tüm veri kümeleri
 
Yatırımın Geri Dönüşü (Return On Investment - ROI): Belli bir amaç doğrultusunda yapılan yatırımdan elde edileceği tahmin edilen finansal getiri
 
Yönetim Bilgi Sistemleri (Executive Information Systems - EIS): Üst yönetime yönelik raporlama amacıyla kullanılan alt sistem. Günümüzde çok boyutlu veri tabanlarından anlık sorgu yapmayı; satış, finans gibi kanallar üzerinde analitik uygulamalar geliştirmeyi sağlar.

Not : Bu çalışma http://www.verimax.com.tr/dokuman_crmterim.html sitesinden alınmıştır.

Reference Keys

Erikli Su-Nestle Waters Türkiye, Erben Kontrol Sistemleri, SaatveSaat, Siemens Ankastre, Kont Bilgisayar / BT Kurumsal, Houghton Kimya,  Teknolojix Mağazaları (Sönmez Holding), American Life, Kiler Hipermarketleri

CRM, Call Center, Çağrı Merkezi, Turkcell, Dynamics CRM, Mikro, IVR, CTI, bayi, satış, SMS, proje, anket, müşteri memnuniyeti

cub-e.net | just coding...

cub-e.net

just coding...

Using Singleton Design Pattern to Call Dynamics CRM Web Service

Using Singleton Design Pattern to Call Dynamics CRM Web Service

About this article, we will develop a code part which is to keep under control that our own created web service connection will be just one time in the memory and always accessible in the application life cycle. We will apply the Singleton Design Pattern to web service call method that is required for this job.

As you know Dynamics CRM 2011 edition (as well as other Dynamics CRM editions) is a web application, if we want to develop our own software is to use its web services. In this case we have to consider the performance of IIS, and we need to develop our practices accordingly. During each transaction in our application to invoke a web service and our own applications as well as IIS unnecessarily causes swelling so that’s why we need to create unique web service connection in the memory and have to access it all the time. That the Singleton Design Pattern can provide it.

Before beginning to develop our own code, I would like to give more information about Design Patterns. In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved.

Design patterns were originally grouped into the categories: creational patterns, structural patterns, and behavioural patterns, and described using the concepts of delegation, aggregation, and consultation. 

  • Creational Design Patterns: Creational patterns are ones that create objects for you, rather than having you instantiate objects directly. This gives your program more flexibility in deciding which objects need to be created for a given case.

  • Structural Design Patterns: These concern class and object composition. They use inheritance to compose interfaces and define ways to compose objects to obtain new functionality.

  • Behavioural Design Patterns: Most of these design patterns are specifically concerned with communication between objects.

Now, I can begin to explain “Singleton Design Pattern” which is in "Creational Patterns Group”. The singleton pattern is one of the best-known patterns in software engineering. Essentially, a singleton is a class which only allows a single instance of itself to be created, and usually gives simple access to that instance.

ClassName objectName = new ClassName();   // Standart implementation

in that way we can create a lot of instance of ClassName class, but simply we don’t want it, we need a class which is responsible for creating and maintaining its own unique instance.

It requires a mechanism to access the singleton class member without creating a class object and a mechanism to persist the value of class members among class objects. The singleton pattern is implemented by creating a class with a method that creates a new instance of the class if one does not exist. If an instance already exists, it simply returns a reference to that object. To make sure that the object cannot be instantiated any other way, the constructor is made private so we cannot use standard implementation. Implementation also use a public static property instance as the means of accessing the instance. Note the distinction between a simple static instance of a class and a singleton: although a singleton can be implemented as a static instance, it can also be lazily constructed, requiring no memory or resources until needed. Another notable difference is that static member classes cannot implement an interface, unless that interface is simply a marker. So if the class has to realize a contract expressed by an interface, it really has to be a singleton.

Finally, our structure will be like this:

ClassName objectName = ClassName.MethodName();  // Standart way to call a static method

Standart UML of Singleton Design Pattern:


But I simply convert it to this :

I’m creating the attributes and methods which I need to apply;

 private static Service _serviceInstance;

        private IOrganizationService _organizationService;

        private Guid _controlID;

        private static object _lockObject = new object();

 

        public IOrganizationService OrganizationService

        {

            get { return _organizationService; }

        }

 

        public Guid ControlID

        {

            get { return _controlID; }

        }

 

_serviceInstance property, which is consisting form Service object, actually do all the work. We are looking to it for decide our next action. IOrganizationService is one of instance of Dynamics CRM service object – it is an interface. Our goal is prevent to call repeatedly the formation stage of this object. ControlID were created to looking at how many times we have observed an instance of Service Object with the same id in the system. LockObject completely thought out for the future if you use multithreaded logic, it prevent you from experiencing distress variable. Because the singleton pattern must be carefully constructed in multi-threaded applications. If two threads are to execute the creation method at the same time when a singleton does not yet exist, they both must check for an instance of the singleton and then only one should create the new one.

After the basic needs section, we will start to placement process include the phrase in the right place of code that will do the actual job. I wrote the following block into my Singleton class - that is created with Singleton Design Pattern methodology, I’m going to want to run once for every time.

ClientCredentials clntCredentials = new ClientCredentials();

            clntCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password", "domain");

            Uri orgUri = new Uri("http://crm url/Organization Name/XRMServices/2011/Organization.svc");

            OrganizationServiceProxy orgService = new OrganizationServiceProxy(orgUri, null, clntCredentials, null);

            _organizationService = (IOrganizationService)orgService;

Next step is to create the code which is check the memory to this service is created before this call. I’m using attributes which are created before to checking and controlling process.

public static Service GetService()

        {

            try

            {

                if (_serviceInstance == null)

                {

                    lock (_lockObject)

                    {

                        if (_serviceInstance == null)

                            _serviceInstance = new Service(Guid.NewGuid());

                    }

                }

 

                return _serviceInstance;

            }

So, In conclusion we have this code block;

class Service

    {

        private static Service _serviceInstance;

        private IOrganizationService _organizationService;

        private Guid _controlID;

        private static object _lockObject = new object();

 

        public IOrganizationService OrganizationService

        {

            get { return _organizationService; }

        }

 

        public Guid ControlID

        {

            get { return _controlID; }

        }

       

        private Service(Guid controlID)

        {

            ClientCredentials clntCredentials = new ClientCredentials();

            clntCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password", "domain");

            Uri orgUri = new Uri("http://crm url/Organization Name/XRMServices/2011/Organization.svc");

            OrganizationServiceProxy orgService = new OrganizationServiceProxy(orgUri, null, clntCredentials, null);

            _organizationService = (IOrganizationService)orgService;

            _controlID = controlID;

        }

 

        public static Service GetService()

        {

            try

            {

                if (_serviceInstance == null)

                {

                    lock (_lockObject)

                    {

                        if (_serviceInstance == null)

                            _serviceInstance = new Service(Guid.NewGuid());

                    }

                }

 

                return _serviceInstance;

            }

            catch (Exception ex)

            {

                string ErrorDetail = ExceptionHandler.HandleException(ex);

                DetailedLog.CreateLog(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name

                    + " : " + System.Reflection.MethodBase.GetCurrentMethod().ToString()

                    + " : " + ErrorDetail, System.Diagnostics.EventLogEntryType.Error);

 

                return null;

            }

        }

    }

That’s all. We are ready to check. Now, I’m creating a sample console application to check all this process.

     Service service1 = Service.GetService();

            Console.WriteLine(service1.ControlID);

 

            Service service2 = Service.GetService();

            Console.WriteLine(service2.ControlID);

 

            Entity lead = new Entity("lead");

            lead.Attributes["subject"] = "Fuardan Gelenler";

            lead.Attributes["firstname"] = "Barış";

            lead.Attributes["lastname"] = "KANLICA";

            lead.Attributes["companyname"] = "Omerd Business Solutions";

 

            service1.OrganizationService.Create(lead);

 

            Console.WriteLine("Lead created!!");

            Console.ReadLine();

My main goal is to access Service object that is created from instance of CRM Organization Service. In this screenshot, you can clearly see that Service is created in the memory just one time. How is I know? Because ControlID value have same GUID.

Sum of this we can call this GetService() method from everywhere of code but service connection will open only one time.

Baris KANLICA
Dynamics CRM MVP
http://www.mawens.com/aboutme.aspx

 

Loading