MS CRM 2013 Asynchronous Solution Import – 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:

ExecuteAsyncRequest request = new ExecuteAsyncRequest
{
Request = new ImportSolutionRequest
{
//sıkıştırılmış çözümümüzün dosya yolunu veriyoruz
CustomizationFile = File.ReadAllBytes(solutionFilePath),

PublishWorkflows = true,
//yönetilmeyen çözümümüzün var olan çözümün üzerine yazılması için yetki veriyoruz
OverwriteUnmanagedCustomizations = true,

}
};

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{:}{:en}Çö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:

ExecuteAsyncRequest request = new ExecuteAsyncRequest
{
Request = new ImportSolutionRequest
{
//sıkıştırılmış çözümümüzün dosya yolunu veriyoruz
CustomizationFile = File.ReadAllBytes(solutionFilePath),

PublishWorkflows = true,
//yönetilmeyen çözümümüzün var olan çözümün üzerine yazılması için yetki veriyoruz
OverwriteUnmanagedCustomizations = true,

}
};

Okumaya devam et

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 Access Teams – 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ı:
AddUserToRecordTeamRequest adduser = new AddUserToRecordTeamRequest()

{
    Record = recordID,
    SystemUserId = sysUserID,
    TeamTemplateId = teamTemplateID
};
// Execute the request.
AddUserToRecordTeamResponse response =
(AddUserToRecordTeamResponse)service.Execute(adduser);
Kaynak:

{:}{:en}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ı

Okumaya devam et

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. Okumaya devam et

MS CRM 2013 Business Rules – İş 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

Creating If Then Else Logic in CRM 2013 Business Rules

Become a Pseudo-Developer with Business Rules in CRM 2013

{:}{:en}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: Okumaya devam et

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:

SELECT DISTINCT TOP 10000 "contact0".fullname AS "fullname"
,"contact0".telephone1 AS "telephone1"
,"contact0".contactid AS "contactid"
FROM FilteredContact AS "contact0"
JOIN Filterednew_address AS "ac" ON (
"contact0".contactid = "ac".new_contactid
AND (
"ac".new_addressline1 IS NOT NULL
AND "ac".new_addressline2 IS NOT NULL
)
)
JOIN FilteredAccount AS "ad" ON (
"ac".new_accountid = "ad".accountid
AND (
"ad".new_memail IS NOT NULL
AND "ad".NAME LIKE N'F%'
AND "ad".new_mtelephone IS NOT NULL
)
)
WHERE (
"contact0".firstname LIKE N'Fuat%'
AND "contact0".mobilephone IS NOT NULL
AND "contact0".websiteurl = N'fuattatar.blogspot.com'
)
ORDER BY "contact0".fullname ASC
,"contact0".contactid ASC
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.

ELMAH ile hata yakalama/loglama

ELMAH nedir ? ELMAH ile neler yapılabilir?

  • ELMAH (Error Logging Modules and Handlers)  ASP.NET web uygulamaları için hata loglama ve yönetimi kütüphanesidir
  • ELMAH ile exceptionları yakalayıp loglayabilirsiniz.
  • ELMAH ile bütün hataların loglarını tek bir websayfa üzerinden görüntüleyebilirsiniz.
    Örnek:
  • ELMAH ile loglanmış herhangi bir hatanın ayrıntılarını gene tek bir websayfası üzerinden görüntüleyebilirsiniz.
  • ELMAH ile web sayfanızda oluşan hataların oluşma anında mail atılmasını sağlayabilirsiniz.

ÖZELLİKLER:

  • Tüm hata loglarını gerek filtrelemek gerekse Microsoft Excel’ de analiz etmek için CSV olarak kaydedebilirsiniz.
  • Iphone, Ipad veya Custom uygulamanıza notification/tweet gönderilmesini sağlayabilirsiniz.
  • ObjectDataSource ile birlikte ErrorLogDataSourceAdapter kullanarak kendi özel hata log sayfanızı oluşturabilirsiniz.
    Örnek:
  • Hata logunuzu JSON/XML biçiminde alabilirsiniz.
Örnek:
  • Visual Studio kullanarak Web Projesi oluşturuyoruz(Web Forms, Asp.Net MVC2,3,4 farketmiyor)
  • Web projemize sağ tıklayıp Manage Nuget Packages diyoruz. (Nuget Package Manager hakkında daha fazla bilgi almak için şu başlığı inceliyebilirsiniz)
  • Buradan ELMAH yazıyoruz. Yazdığımız gibi karşımıza çıkıyor.
  • Install diyerek ELMAH dll ini projemize ekliyoruz.
  • Projemizi çalıştırıp URL adresine localhost/elmah.axd yazarak ELMAH hata mesajlarına erişebiliyoruz.

Daha fazla ayrıntı ve indirme adresi için tıklayınız.
Örnek web.config dosyası için tıklayınız.
Client Side javascript hatalarını yakalamak için şu başlığı inceliyebilirsiniz.
Detaylı olarak elmahı projenizde nasıl kullanabilirsiniz öğrenmek şu başlığı inceliyebilirsiniz.

Not: Asp.NET 1x, ve Asp.NET 2′ yi destekler.
Not: Logların veritabanına kaydedilmesi için web config ayarlarının yapılması gerekmektedir.

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.

public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable Get()
        {
            return new string[] { "value1", "value2" };
        }
        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }
        // POST api/values
        public void Post([FromBody]string value)
        {
        }
        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }
        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }

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.

        

///

        /// Get all of the values.
        ///

///         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/

MS CRM 4.0 ekler için dosya boyutu sınırını değiştirmek

CRM 4.0 ekler için dosya boyutu sınırını değiştirmek:

1. Web.config dosyasını açıyoruz (C:InetpubCRMweb.config).

2.    elementi içerisini aşağıdaki gibi değiştiriyoruz (10240 i istediğimiz şekilde değiştirebiliriz)

3. web.config dosyamızı kaydediyoruz.

4. Tarayıcıdan Crm’ i açıyoruz.

5. Ayarlar | Yönetim| Sistem Ayarları kısmına giriyoruz.

6. E-posta sekmesine tıklıyoruz.

7.Maiksimum dosya boyutu kısmını (kilobytes) 10240 yapıyoruz.

9.Tamam butonuna basıp kapatıyoruz.

10. Sonrada IIS i yeniden başlatıyoruz. .{:}{:en}CRM 4.0 ekler için dosya boyutu sınırını değiştirmek:

1. Web.config dosyasını açıyoruz (C:InetpubCRMweb.config).

2.    elementi içerisini aşağıdaki gibi değiştiriyoruz (10240 i istediğimiz şekilde değiştirebiliriz) :

4. web.config dosyamızı kaydediyoruz.

5. Tarayıcıdan Crm’ i açıyoruz.

6. Ayarlar | Yönetim| Sistem Ayarları kısmına giriyoruz.

7. E-posta sekmesine tıklıyoruz.

8.Maiksimum dosya boyutu kısmını (kilobytes) 10240 yapıyoruz.

9.Tamam butonuna basıp kapatıyoruz.

10. Sonrada IIS i yeniden başlatıyoruz. .{:}

CRM 4.0 Menü ve Kontrolleri Özelleştirme

MS CRM 4.0′ da menü ve kontrolleri 2 yöntem ile özelleştirebiliyoruz:

  • Site Map
  • ISV.Config
Not: Her iki yöntemde de XML yapısını kullanacağımızdan XML ile ilgili temel bilgileri edinmiş olmanız gerekiyor. Eğer XML hakkında daha fazla bilgi edinmek istiyorsanız şuradaki adrese bakmakta fayda var.

Site Map (Site Haritası)

Site haritaları Ms Crm’de her alanda gösterilecek olan nesnelerin yazıldığı xml dosyasıdır. Örneğin çalışma alanındaysanız(workplace area) sol tarafta aktiviteler(activities), takvim(calendar) gibi seçenekler görürsünüz. Bu seçenekler varlıklara(entities) kısa yoldan erişmemizi sağlayan kısayollardır.
Özelleştirmeleri Ver
Özelleştirmeleri Ver
Site haritalarını düzenlemek için öncelikle dışa aktarmalıyız(export). Bunun için ayarlar(setting)>özelleştirme(customization)>export customization’dan sitemap seçilip özelleştirmeleri ver denir. Daha sonra değişikliğimizi yapıp sisteme tekrardan yüklemeliyiz. Site haritasının içerdiği xml’in yapısı aşağıdaki gibidir:
   


         
SiteMap: En üst seviyedeki xml etiketidir. Aynı isimde area’ları içeren bir etiket içerebilir.
Area: Her alan(area)’ın kendine has navigasyon butonları bulunur. Varsayılan olarak Site Haritası(SiteMap) 6 tane alan(area) ile beraber gelir. Bunlar:
  • Çalışma Alanı(Workplace)
  • Satış(Sales)
  • Pazarlama(Marketing)
  • Servis(Service)
  • Ayarlar(Setting)
  • Kaynak Merkezi(Resource Center)
Aşağıda Çalışma alanı(Workplace) için varsayılan xml attributeları ve değerleri verilmiştir.
Not: ResourceId ve DescriptionResourceId yerine Title kullanabiliriz.
Bu Attributelardan:
  • Id: Alanın benzersiz tanımlayıcısı.
  • ResourceId: Resource id.(Internal)
  • ShowGroups: Eğer alan birden fazla gurup içeriyor ise zorunludur.
  • Icon: Görsel url adresi.
  • DescriptionResourceId.(Internal)
Group: Alanların içerdiği gurupları ifade eder. Bir veya birden fazla olabilir.

SubArea: Herhangi bir sayfaya veya web adresine gitmek için kullandığımız adrestir.

ISV.Config

ISV.Config dosyası toolbar’a kontrol ekleyebildiğiniz crm’e ekstra özellikler katabilmek için kullandığımız xml dosyasıdır. Varlıklara veya web uygulamalarına hızlı bir şekilde erişmemizi sağlayan kısayollar oluşturabildiğimiz  site haritalarının aksine crm varlıklarından olmayan bir web uygulaması veya 3.parti bir yazılıma erişmemizi sağlayan, kısayollar oluşturmamızı sağlayan xml dosyasıdır. Site haritasındaki gibi önce export edilmeli gerekli değişiklik yapıldıktan sonra tekrar import edilmelidir.

Isv.Config dosyası varsayılan olarak kapalıdır. Xml dosyasındaki değişikliklerin crm’e yansıması için isv.config dosyasının aktif edilmesi gerekir. Bunu:
Ayarlar>Yönetim>Sistem  Ayarları>Özelleştirme tabından  yapabilirsiniz.

Sistem Ayarları

ISV.Config dosyasının içerdiği xml’in yapısı aşağıdaki gibidir:

  
    
    
    
    
    
    
  

IsvConfig: sadece etiketini içerebilir. En üst seviyedeki etikettir.
configuration: Versiyon numarasını içerir. Örneğin:
root: Global menü ve toolbar’ları içerir. Örneğin:

    
        
    
        
        
        
     

Button: Buton oluşturmamızı sağlayan etikettir. Aşağıdaki etiketleri kapsayabilir:

    
       
    
    
        
    

Buton elementi aşağıdaki attribute’lara sahip olabilir:

  • Client: Bu attribute butonumuzun hangi client uygulamasında görüntüleneceğini belirtir. 2 seçenek vardır. Outlook, web.
  • AccessKey: Butonumuzu faremiz ile değilde klavyemizden tetiklemek için oluşturacağımız kısayoldur. Tek 1 harf alabilir. Alt +{seçtiğiniz harf} şeklinde çalışır. (Alt kısayolu değiştirilemez)
  • AvalibleOffline: Bu attribute outlookta offline çalıştığımız zaman butonumuzun görünüp görünmeyeceğini belirtir.
  • Icon: Bu attribute butonumuzun üzerinde görüntülecek resmi belirtir. (Icon dosyası gif olmalıdır. 16×16 8-bit (256) web için, 16×16 veya 32×32 outlook için)
  • Javascript: Bu attribute butona tıklandıktan sonra çalışacak javascript i belirler. Örneğin:
    
    
  • PassParams: O anki varlığın url’ine parametre ekler.
  • Url: Url adresi. Eğer javascript attribute’unda değer varsa bu attribute işlemez.
  • ValidForCreate: Eğer buton bir varlık içerisine konulmuş ise o varlıktan yeni bir kayıt oluşturulduğunda butonun gösterilip gösterilmeyeceğini belirler.
  • ValidForUpdate:  Eğer buton bir varlık içerisine konulmuş ise o varlıktan bir kayıt güncelleniyorsa butonun gösterilip gösterilmeyeceğini belirler.
  • WinMode:
    • 0=Window: Url’i içeren yeni pencere açar.
    • 1=Modal Dialog Box: Yeni pencere açar(kutu şeklinde) ve opencereyi kapatmadan önceki sayfada işlem yapamayız.
    • 2=Modeless Dialog Box: Yeni pencere açar(kutu şeklinde). İstersek kapatmadan önceki sayfaya dönüp işlem yapabiliriz.
  • WinParams: Açılacak olan dialog box’ın boyutunu, yerini ve rengini gibi özelliklerini parametre olarak yollayabileceğimiz parametre. Örneğin:
    
    

 Entities: Her varlığın kendi menü ve toolbarı mevcuttur. Ondan dolayı eğer biz varlığa menü ve toolbar itemi eklemek istiyor ise isv.config dosyasında bu varlığı belirtmek zorundayız. Örneğin:



Not: Title daki LCID kodu dil kodudur. 1055 türkçe dil kodudur.

{:}{:en}MS CRM 4.0′ da menü ve kontrolleri 2 yöntem ile özelleştirebiliyoruz:

  • Site Map
  • ISV.Config
Not: Her iki yöntemde de XML yapısını kullanacağımızdan XML ile ilgili temel bilgileri edinmiş olmanız gerekiyor. Eğer XML hakkında daha fazla bilgi edinmek istiyorsanız şuradaki adrese bakmakta fayda var.

Site Map (Site Haritası)

Site haritaları Ms Crm’de her alanda gösterilecek olan nesnelerin yazıldığı xml dosyasıdır. Örneğin çalışma alanındaysanız(workplace area) sol tarafta aktiviteler(activities), takvim(calendar) gibi seçenekler görürsünüz. Bu seçenekler varlıklara(entities) kısa yoldan erişmemizi sağlayan kısayollardır.
Özelleştirmeleri Ver
Özelleştirmeleri Ver
Site haritalarını düzenlemek için öncelikle dışa aktarmalıyız(export). Bunun için ayarlar(setting)>özelleştirme(customization)>export customization’dan sitemap seçilip özelleştirmeleri ver denir. Daha sonra değişikliğimizi yapıp sisteme tekrardan yüklemeliyiz. Site haritasının içerdiği xml’in yapısı aşağıdaki gibidir:
   
 
           
 
: En üst seviyedeki xml etiketidir. Aynı isimde area’ları içeren bir etiket içerebilir.
: Her alan(area)’ın kendine has navigasyon butonları bulunur. Varsayılan olarak Site Haritası(SiteMap) 6 tane alan(area) ile beraber gelir. Bunlar:
  • Çalışma Alanı(Workplace)
  • Satış(Sales)
  • Pazarlama(Marketing)
  • Servis(Service)
  • Ayarlar(Setting)
  • Kaynak Merkezi(Resource Center)
Aşağıda Çalışma alanı(Workplace) için varsayılan xml attributeları ve değerleri verilmiştir.
Not: ResourceId ve DescriptionResourceId yerine Title kullanabiliriz.
Bu Attributelardan:
  • Id: Alanın benzersiz tanımlayıcısı.
  • ResourceId: Resource id.(Internal)
  • ShowGroups: Eğer alan birden fazla gurup içeriyor ise zorunludur.
  • Icon: Görsel url adresi.
  • DescriptionResourceId.(Internal)
: Alanların içerdiği gurupları ifade eder. Bir veya birden fazla olabilir.
: Herhangi bir sayfaya veya web adresine gitmek için kullandığımız adrestir.

ISV.Config

ISV.Config dosyası toolbar’a kontrol ekleyebildiğiniz crm’e ekstra özellikler katabilmek için kullandığımız xml dosyasıdır. Varlıklara veya web uygulamalarına hızlı bir şekilde erişmemizi sağlayan kısayollar oluşturabildiğimiz  site haritalarının aksine crm varlıklarından olmayan bir web uygulaması veya 3.parti bir yazılıma erişmemizi sağlayan, kısayollar oluşturmamızı sağlayan xml dosyasıdır. Site haritasındaki gibi önce export edilmeli gerekli değişiklik yapıldıktan sonra tekrar import edilmelidir.

Isv.Config dosyası varsayılan olarak kapalıdır. Xml dosyasındaki değişikliklerin crm’e yansıması için isv.config dosyasının aktif edilmesi gerekir. Bunu:
Ayarlar>Yönetim>Sistem  Ayarları>Özelleştirme tabından  yapabilirsiniz.

Sistem Ayarları

ISV.Config dosyasının içerdiği xml’in yapısı aşağıdaki gibidir:

: sadece etiketini içerebilir. En üst seviyedeki etikettir.
: Versiyon numarasını içerir. Örneğin:
: Global menü ve toolbar’ları içerir. Örneğin:

: Buton oluşturmamızı sağlayan etikettir. Aşağıdaki etiketleri kapsayabilir:

Buton elementi aşağıdaki attribute’lara sahip olabilir:

  • Client: Bu attribute butonumuzun hangi client uygulamasında görüntüleneceğini belirtir. 2 seçenek vardır. Outlook, web.
  • AccessKey: Butonumuzu faremiz ile değilde klavyemizden tetiklemek için oluşturacağımız kısayoldur. Tek 1 harf alabilir. Alt +{seçtiğiniz harf} şeklinde çalışır. (Alt kısayolu değiştirilemez)
  • AvalibleOffline: Bu attribute outlookta offline çalıştığımız zaman butonumuzun görünüp görünmeyeceğini belirtir.
  • Icon: Bu attribute butonumuzun üzerinde görüntülecek resmi belirtir. (Icon dosyası gif olmalıdır. 16×16 8-bit (256) web için, 16×16 veya 32×32 outlook için)
  • Javascript: Bu attribute butona tıklandıktan sonra çalışacak javascript i belirler. Örneğin:
  • PassParams: O anki varlığın url’ine parametre ekler.
  • Url: Url adresi. Eğer javascript attribute’unda değer varsa bu attribute işlemez.
  • ValidForCreate: Eğer buton bir varlık içerisine konulmuş ise o varlıktan yeni bir kayıt oluşturulduğunda butonun gösterilip gösterilmeyeceğini belirler.
  • ValidForUpdate:  Eğer buton bir varlık içerisine konulmuş ise o varlıktan bir kayıt güncelleniyorsa butonun gösterilip gösterilmeyeceğini belirler.
  • WinMode:
    • 0=Window: Url’i içeren yeni pencere açar.
    • 1=Modal Dialog Box: Yeni pencere açar(kutu şeklinde) ve opencereyi kapatmadan önceki sayfada işlem yapamayız.
    • 2=Modeless Dialog Box: Yeni pencere açar(kutu şeklinde). İstersek kapatmadan önceki sayfaya dönüp işlem yapabiliriz.
  • WinParams: Açılacak olan dialog box’ın boyutunu, yerini ve rengini gibi özelliklerini parametre olarak yollayabileceğimiz parametre. Örneğin:

 : Her varlığın kendi menü ve toolbarı mevcuttur. Ondan dolayı eğer biz varlığa menü ve toolbar itemi eklemek istiyor ise isv.config dosyasında bu varlığı belirtmek zorundayız. Örneğin:

Not: Title daki LCID kodu dil kodudur. 1055 türkçe dil kodudur.

{:}