XrmToolBox nedir? On-premises Dynamics 365 yönetimi
On-premises bir Dynamics 365 ortamıyla çalışıyorsanız, bir süre sonra aynı problemle karşılaşıyorsunuz:
Yapmak istediğiniz iş aslında çok büyük değil ama Dynamics 365’in kendi arayüzünde bunu yapmak ya gereğinden fazla zaman alıyor ya da istediğiniz bilgiye doğrudan ulaşamıyorsunuz.
Bir entity’nin bütün attribute’larını görmek, belirli bir FetchXML sorgusunu hazırlamak, plugin trace kayıtlarını incelemek veya birkaç yüz kaydı toplu olarak güncellemek gibi işler buna iyi bir örnek.
Bunlar için her seferinde bir Console App yazmak da çok mantıklı değil. PowerShell veya Web API ile çözmek mümkün ama 10-15 dakikalık bir operasyon için authentication, request, response ve hata ayıklama tarafıyla uğraşmak bazen yapılacak işten daha uzun sürüyor.
XrmToolBox tam olarak bu noktada devreye giriyor.
XrmToolBox nedir?
XrmToolBox, Tanguy Touzard tarafından başlatılmış açık kaynaklı bir Dynamics 365 / Dataverse aracıdır.
Buradaki önemli nokta şu: XrmToolBox’ın kendisini tek bir araçtan ziyade bir plugin host olarak düşünmek daha doğru.
İçinde metadata incelemeden FetchXML oluşturmaya, toplu veri işlemlerinden solution yönetimine ve plugin trace kayıtlarını incelemeye kadar farklı amaçlara yönelik çok sayıda community plugin bulunuyor.
Dolayısıyla benim XrmToolBox’ı kullanma şeklim genellikle şu:
Dynamics 365’te yapmak istediğim iş küçük ama arayüzden yapmak gereksiz yere uzun sürüyorsa, önce XrmToolBox’ta bunun için bir araç var mı diye bakıyorum.
Bu yaklaşım özellikle on-premises ortamda oldukça işime yarıyor.
Kurulum ve bağlantı
XrmToolBox’ın kullanımı oldukça basit.
Uygulamaya aşağıdaki link üzerinden erişebilirsiniz.
Uygulamayı indirip çalıştırdıktan sonra Tool Library üzerinden ihtiyacınız olan plugin’leri seçerek yükleyebiliyorsunuz. Hepsini aynı anda kurmak yerine gerçekten kullanacağınız araçları seçmek daha mantıklı.
Uygulamaya giriş yaptıktan sonra, sol üstteki Connect’e tıklıyoruz.

Daha sonra karşımıza çıkan ekranda New butonuna tıklıyoruz.

Burada hangi bağlantı yöntemini kullanacağımızı seçiyoruz. Benim açımdan burada önemli olan nokta ise on-premises bağlantı.

On-premises ve NTLM bağlantısı

Online Dataverse ortamlarında OAuth tabanlı bağlantılarla çalışmaya alışkınsanız, on-premises tarafta süreç biraz farklı.
Örneğin NTLM kullanılan bir ortamda bağlantı oluştururken:
- Discovery URL yerine kullandığınız Dynamics 365 organization URL’ini vermeniz gerekebilir.
- Windows Integrated Authentication kullanıyorsanız, domain’e bağlı bir makineden çalışırken mevcut Windows hesabınızla bağlantı kurabilirsiniz.
- Farklı bir kullanıcıyla bağlanmanız gerekiyorsa domain\kullanıcı formatında kimlik bilgileri girmeniz gerekebilir.
Benim burada özellikle dikkat ettiğim konu network erişimi.
CRM’e erişemeyen bir makinede XrmToolBox üzerinden bağlantıyı test ettiğinizde problemin kaynağını ilk bakışta anlamak her zaman kolay olmayabiliyor. VPN, domain erişimi, firewall veya CRM endpoint’ine erişim gibi konuların hepsi bağlantı probleminin sebebi olabilir.
Bu nedenle bağlantı problemi yaşandığında sadece XrmToolBox ayarlarına bakmak yerine önce makinenin CRM’e gerçekten erişebildiğinden emin olmak gerekiyor.
En çok kullandığım pluginler

300’den fazla plugin arasından teorik olarak faydalı görünen çok fazla araç bulabilirsiniz. Günlük kullanımda en çok işime yarayanlarlardan bazıları;
FetchXML Builder
Muhtemelen en sık kullandığım araçlardan biri.
Özellikle bir view, rapor veya belirli bir veri seti için FetchXML hazırlamam gerektiğinde sorguyu baştan sona elle yazmak yerine FetchXML Builder ile oluşturmayı tercih ediyorum.
Entity’leri, alanları, filtreleri ve link-entity ilişkilerini görsel olarak oluşturabilmek ciddi zaman kazandırıyor.
Özellikle birkaç entity’yi birbirine bağlayan sorgularda, XML’i baştan yazmak yerine nerede ne yaptığımı görerek ilerlemek benim için çok daha rahat.
Bir sorgunun çalışıp çalışmadığını da doğrudan araç üzerinden kontrol edebildiğim için küçük sorgu denemelerinde ayrıca başka bir ortam hazırlamama gerek kalmıyor.
Ayrıca chart üzerinde bazı isim değişikliklerini direkt olarak Dynamics üzerinden yapamıyoruz. O yüzden FetchXML Builder üzerinden kısa bir text düzenlemesi ile, grafik isimlendirmelerini kolayca değiştirebilirsiniz.
Metadata Document Generator
Bir entity’nin yapısını detaylı şekilde incelemem gerektiğinde oldukça kullanışlı.
Örneğin bir entity’nin:
- attribute’ları,
- data type’ları,
- relationship’ları,
- bazı metadata bilgileri
hakkında dokümantasyon çıkarmam gerektiğinde bunları tek tek toplamaktansa Metadata Document Generator kullanıyorum.
Özellikle mevcut bir CRM ortamına sonradan dahil olduğunuzda veya daha önce sizin oluşturmadığınız bir entity üzerinde çalışırken böyle bir çıktı oldukça faydalı olabiliyor.
Plugin Trace Viewer
Plugin tarafında bir problem olduğunda ilk baktığım araçlardan biri.
Plugin’ın neden hata verdiğini veya beklemediğim bir davranışın nereden kaynaklandığını anlamaya çalışırken trace kayıtlarını hızlı şekilde filtreleyip inceleyebilmek önemli.
Özellikle birden fazla plugin’ın aynı işlem sırasında devreye girdiği ortamlarda, hangi step’in ne zaman çalıştığını anlamaya çalışırken oldukça pratik.
Bulk Data Updater ve Advanced Delete
Toplu veri işlemleri için kullanıyorum.
Örneğin belirli bir koşulu sağlayan kayıtların bir alanını değiştirmem gerekiyorsa, kayıtları Excel’e çıkarıp değiştirip tekrar CRM’e import etmek yerine doğrudan ilgili araçları kullanmak çok daha hızlı olabiliyor.
Tabii burada XrmToolBox’ın en dikkat edilmesi gereken taraflarından biri de ortaya çıkıyor:
Hızlı olması, risksiz olduğu anlamına gelmiyor.
Yanlış filtreyle çalıştırılan bir bulk update veya delete işlemi çok sayıda kaydı etkileyebilir.
Bu yüzden production ortamında bu araçları kullanırken özellikle dikkatli olmak gerekiyor.
Solution Components Mover ve Solution Layers
Solution tarafında problem araştırırken işime yarayan araçlar.
Özellikle bir component’in hangi solution içerisinde bulunduğunu veya farklı solution’ların birbirini nasıl etkilediğini anlamaya çalışırken bu araçlar faydalı oluyor.
Solution yapısı büyüdükçe “bu alan neden böyle davranıyor?” sorusunun cevabı her zaman doğrudan form veya entity üzerinde görünmeyebiliyor.
Böyle durumlarda solution ve layer bilgisini incelemek problemi anlamayı kolaylaştırıyor.
XrmToolBox kullanırken dikkat ettiğim birkaç şey
XrmToolBox’ın en güzel taraflarından biri işlemleri hızlı hale getirmesi. Ama aynı özellik bazı plugin’leri tehlikeli de yapabiliyor.
Özellikle production ortamında ben şu kuralları uygulamaya çalışıyorum:
- Önce plugin’in ne yaptığını anlamak.
- Read-only bir araç mı, yoksa CRM üzerinde değişiklik yapıyor mu kontrol etmek.
- Yazma veya silme işlemlerini mümkün olduğunca önce test ortamında denemek.
- Bulk işlem yapmadan önce filtreyi küçük bir grupta kontrol etmek.
- Silme veya büyük çaplı güncelleme öncesinde geri dönüş planının olduğundan emin olmak.
Esenlikler.