cub-e.net

just coding...

CRM Semineri

15 KasimPazar günü saat 10:30 - 16:30 arasında Omerd Business Solutions ofisinde "CRM, XRM Kavramları ve Dynamics CRM" konulu bir seminer vereceğim.

CRM Semineri Duyurusu

11Temmuz Cumartesi günü saat 10:30 - 12:30 arasında Bahçeşehir Üniversitesinde "CRM, XRM Kavramları ve Dynamics CRM" konulu bir seminer vereceğim. İçerik ise şu şekilde olacak; Dünya’da uzun yıllardır konuşulan CRM “Müşteri İlişkileri Yönetimi” kavramı müşterimizin neleri sevdiğini, neye para harcadığını ve neleri yapmaktan hoşlandığını kısacası bize müşterimizin kim olduğu gösteren temeller üzerine oturmuştur. XRM sadece müşteri değil onun haricinde dış dünyada yönettiğimiz varlıkların bize kim/ne olduğunu  göstermektedir. İşte bu seminerde Microsoft Dynamics CRM’in bu iki kavramın ortasına nasıl oturduğunu ve programatik olarak nasıl geliştirilebileceği anlatılacaktır.

Microsoft Dynamics CRM, adındaki CRM ibarisi nedeniyle sadece Müşteri İlişkileri departmanlarını ilgilendiren bir yazılım olarak anlaşılmaktadır. Aslında Dynamics CRM bir platfomdur ve üzerinde sizin şekillendirdiğimiz bir çok altyapıya destek verebilir.

Türkiye'nin Açık Kaynak Topluluğu Birliktegeliştir Yeni Versiyonu İle Yayında

Açık kaynak kodlu proje geliştirme yaklaşımının giderek yaygınlaştığı günümüz yazılım dünyasında Microsoft platform ve araçları kullanılarak birçok açık kaynak kodlu uygulama geliştirilmekte ve Microsoft’un kendisi de bu konuda çalışmalar yapmaktadır.

Açık kaynak kodlu bir içerik yönetim sistemi olan Umbraco üzerine kurulan Birliktegeliştir, Türkiye’de de Microsoft platformlarında açık kaynaklı projeler geliştirilmesi ve mevcut açık kaynak kodlu projelerin kullanımının yaygınlaştırılmasını amaçlamaktadır. Zaman içinde yaygınlaşan açık kaynak kod topluluğuna daha iyi içerik sağlamak amacıyla Birliktegeliştir yeni arayüzü ve yeni özellikleriyle yayında.

Sizlerin de kendi projelerinizi ve kendi içeriğinizi rahatlıkla paylaşabileceğiniz Birliktegeliştir’de ayrıca Türkiye'de geliştirilmiş açık kaynak kodlu projelere, bugüne kadar dünyada yapılmış açık kaynak kodlu uygulamaların kullanımı ile ilgili makale, video gibi Türkçe kaynaklara ulaşabilirsiniz.

Bunun yanısıra uygulama geliştiricilerin kodlama sırasında çoğunlukla kullandığı kod bloklarına Kod Parçaları kısmından ulaşabilirsiniz.

Birliktegeliştir topluluğuna www.birliktegelistir.com adresinden ulaşabilirsiniz.

birliktegelistir@birliktegelistir.com 
http://www.twitter.com/bgelistir

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

User’s Guide now available in PDF and Word for CRM 4.0 - CRM 4.0 için kullanıcı kitapçığı Word ve PDF biçiminde hazır

CRM 4.0 için kullanıcı kitapçığı son kullanıcı için basit anlatımlı yardımlar ve kısayolladan oluşmakta. Döküman satış,pazarlama ve şikayet yönetimi modülleri için anlatımlar ve adım adım tanımlardan oluşmakta.

----

The Microsoft Dynamics CRM 4.0 User’s Guide includes all of the basic end-user information available in Help, including documentation on sales, marketing, and customer service features, as well as step-by-step instructions on working with Advanced Find and workflow. And it’s in an easily printable format.

 

http://www.microsoft.com/downloads/details.aspx?FamilyId=0DB4D487-1BAA-4619-9BC5-074D73C3997D&displaylang=en

Developer Ramp up Kit for Microsoft Dynamics CRM 4.0

Microsoft yazılım geliştiricilerin CRM Platformu üzerinde nasıl yazılım geliştireceklerini anlatan Developer Ramp up Kit for Dynamics CRM 4.0 isimli eğitim materyallerini yayınladı. Bu materyaller Web Servisleri, Workflow Mimarisi, SSRS ile raporlama gibi birçok konuda bilgi veriyor.

-----

This kit is for .NET based developers who want to ramp up and build on top of the Microsoft Dynamics CRM platform. Microsoft Dynamics CRM 4.0 uses familiar components such as Web Service endpoints, Windows Workflow Foundation, SSRS reporting, and more; making it a general purpose platform for any line-of-business applications. Developers can use their existing .NET skills to take advantage of various features of the Microsoft Dynamics CRM platform. This kit drills into the details of such development and explains how developers can connect, extend, and embed with the Microsoft Dynamics CRM platform. It includes presentations, hands-on labs, and a VPC environment for practicing. This content was delivered earlier as part of the Metro Early Adopter initiative and the video recordings of the ramp-up presentations are included as well.

Familiarity with the .NET Framework, Microsoft Visual C#, Jscript, Microsoft SQL Server and general Web development is recommended.

 http://msdn.microsoft.com/en-us/library/cc720132.aspx

Microsoft Dynamics CRM Hatalarını Yakalamak

CRM web servisi bir web servisinin doğası gereği soap ile iletişim kurmakta ve işlenen hataları da soap içinde xml ile döndürmektedir.


Microsoft Dynamics CRM Web Servisi'nde Request parametresi kullanılarak bir çağrı yaptığınızda hata olarak System.Web.Services.Protocols.SoapException sınıfından ortak bir hata mesaj yapısı döner.

SoapException'ın Message property'si her zaman için "Server was unable to process request." hatasını döndürür.

SoapException içerisinde Detail property'si oluşmuş olan hata hakkında daha fazla bilgi verecektir. Detail property bir XmlNode türündendir ve InnerXml property aşağıdaki formatta hatayı sunmaktadır.

<error>
<description>Error description goes here.</description>
<code>0xABCD1234</code>
<type>Platform</type>
</error>
 

ErrorCode yani xml içerisindeki Number hexadecimal türündedir. Örnek verecek olursak; eğer veritabanında olmayan bir fax'ı çağırmaya kalkalsanır hata aşağıdaki şekilde olacaktır:

<error>
<code>0x80041103</code>
<description>'Lead' entity doesn't contain attribute with Name = 'name'.</description>
<type>Platform</type>
</error>

Standart bir kodlama mantığında catch bloğunda bu hatayı aşağıdaki şekilde yakalabiliriz.

catch (System.Web.Services.Protocols.SoapException ex)
{
   
Message = ex.Message;
   
Detail = ex.Detail.InnerText;
}

Bu şekilde hatayı öğrenebiliriz ama detaylı ve güzel bir hata mesajı olmaz son kullanıcı için. Tabii burada bu hataları loglayacak bir yapı oluşturabiliriz bu tercihinize kalmış ama her durumda detaya ihtiyacımız var.

CRM'in detaylı hata kod listesine buraya tıklayarak ulaşabilirsiniz.

Hata yapısı ve içeriği hakkında bu bilgileri verdikten sonra bu hataları yakalayacak kodu vermek güzel olacak sanırım :) Aşağıda kodu ve açıklamasını bulabilirsiniz.

 

/// <summary>
///
Hatalari yakaliyoruz.
/// </summary>
/// <param name="ex">System Exception</param>
/// <returns>hatanin detayli aciklamasi</returns>
private string HandleException(Exception ex)
{
   
string Error = "Uygulama bir hata ile karsilasti." + System.Environment.NewLine;
    Error +=
"Message : " + ex.Message + System.Environment.NewLine;
   
if (ex.InnerException != null)
        Error += ex.InnerException.Message + System.
Environment.NewLine;
   

    SoapException
se = ex as SoapException;
   
if (se != null)
    {
        Error +=
"Code : " + GetError(se.Detail, "//code") + System.Environment.NewLine;
        Error +=
"Desription : " + GetError(se.Detail, "//description") + System.Environment.NewLine;
        Error +=
"Type : " + GetError(se.Detail, "//type") + System.Environment.NewLine;
    }
   
return Error;
}

/// <summary>
/// SoapException.Detail icerisindeki hatayi dondurur
/// </summary>
/// <param name="errorInfo">hatayi iceren XmlNode'u.</param>
/// <param name="item">geri dondurulecek hata.</param>
/// <returns>hata detayi ya da bos icerik.</returns>
private string GetError(XmlNode errorInfo,string item)
{
   
XmlNode code = errorInfo.SelectSingleNode(item);
   
if (code != null)
   
    return code.InnerText;
   
else
        return
"";
}
  1. Burada dikkat edilmesi gereken şey hatanın SoapException sınıfı türünden olup olmadığını kontrol ettiğimiz kısım;

        SoapException se = ex as SoapException;

    eğer içerik SoapException türünden ise detayını öğrenmek isityoruz. ( "as" ifadesi hakkında daha fazla bilgi almak için buraya tıklayınız.)
  2. Yukarıda hata durumunda dönecek Xml içeriğini verdim. Bu bir Xml olduğu için XmlNode'larına erişerek istediğimiz bilgiyi alalım. İşte GetError bu işe yarıyor. Soap Exception'ın Detail'ını ve istediğimiz node'u söylüyoruz bize geri dönüyor.

        GetError(se.Detail, "//code")

Bu kod sonucunda elde ettiğimiz hata mesajı;

 

Uygulama bir hata ile karsilasti.
Message : Server was unable to process request.
Code : 0x80041103
Desription : 'Lead' entity doesn't contain attribute with Name = 'name'.
Type : Platform

 

Bir makalemizin daha sonuna geldik umarım faydalı olmuştur.


Barış KANLICA

Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net
forum.cub-e.net