{"id":44863,"date":"2026-09-23T21:09:48","date_gmt":"2026-09-23T18:09:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/"},"modified":"2026-09-23T21:10:25","modified_gmt":"2026-09-23T18:10:25","slug":"spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/","title":{"rendered":"spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz"},"content":{"rendered":"<h2>spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz<\/h2>\n<p>Microsoft Dataverse platformunda geli\u015ftirme yapan ekipler i\u00e7in plugin (eklenti) y\u00f6netimi ve da\u011f\u0131t\u0131m\u0131, projenin ba\u015far\u0131s\u0131nda kritik bir rol oynar. Uzun y\u0131llard\u0131r bir\u00e7ok geli\u015ftiricinin tercihi olan spkl, basit ve etkili bir \u00e7\u00f6z\u00fcm sunsa da, modern geli\u015ftirme pratiklerinin ve bulut tabanl\u0131 mimarilerin getirdi\u011fi yenilikler kar\u015f\u0131s\u0131nda baz\u0131 s\u0131n\u0131rlamalara sahip olabilmektedir. Peki, mevcut spkl tabanl\u0131 projelerinizi daha modern, esnek ve g\u00fc\u00e7l\u00fc bir ara\u00e7 olan Pillaro&#8217;ya ta\u015f\u0131mak neden bu kadar \u00f6nemli? Bu kapsaml\u0131 rehber, mevcut spkl pluginlerinizi Pillaro&#8217;ya sorunsuz bir \u015fekilde nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayarak, geli\u015ftirme s\u00fcre\u00e7lerinizi optimize etmenize ve gelece\u011fe haz\u0131r hale getirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Dataverse Plugin Geli\u015ftirmede spkl&#8217;den Pillaro&#8217;ya Ge\u00e7i\u015f Neden Gerekli?<\/h2>\n<p>Dataverse (eski ad\u0131yla Common Data Service) \u00fczerinde i\u015f mant\u0131\u011f\u0131 geli\u015ftirmek i\u00e7in kullan\u0131lan pluginler, platformun temel ta\u015flar\u0131ndan biridir. Bu pluginlerin geli\u015ftirilmesi, derlenmesi ve da\u011f\u0131t\u0131lmas\u0131 s\u00fcre\u00e7leri, projenin verimlili\u011fi ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Y\u0131llard\u0131r bir\u00e7ok geli\u015ftirici, bu s\u00fcre\u00e7leri kolayla\u015ft\u0131rmak i\u00e7in spkl (Solution Packager &amp; Kendo UI for Dataverse) gibi ara\u00e7lar\u0131 kullanm\u0131\u015ft\u0131r. spkl, \u00f6zellikle ilk \u00e7\u0131kt\u0131\u011f\u0131 d\u00f6nemlerde, Visual Studio entegrasyonu ve basit da\u011f\u0131t\u0131m mekanizmalar\u0131yla olduk\u00e7a pop\u00fclerdi. Ancak teknoloji d\u00fcnyas\u0131 s\u00fcrekli evriliyor ve bu evrim, geli\u015ftirme ara\u00e7lar\u0131ndan beklentilerimizi de \u015fekillendiriyor. G\u00fcn\u00fcm\u00fczde, Continuous Integration\/Continuous Delivery (CI\/CD &#8211; S\u00fcrekli Entegrasyon\/S\u00fcrekli Teslimat) pratikleri, otomasyon, bulut tabanl\u0131 geli\u015ftirme ve daha esnek yap\u0131land\u0131rma se\u00e7enekleri \u00f6n plana \u00e7\u0131kmaktad\u0131r. spkl, bu modern gereksinimlerin baz\u0131lar\u0131na tam olarak yan\u0131t veremeyebilir veya bunlar\u0131 karma\u015f\u0131k hale getirebilir. \u00d6rne\u011fin, karma\u015f\u0131k derleme s\u00fcre\u00e7leri, ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi ve farkl\u0131 ortamlar aras\u0131nda tutarl\u0131 da\u011f\u0131t\u0131m sa\u011flamak, spkl ile zaman zaman zorlay\u0131c\u0131 olabilmektedir. Bu durum, \u00f6zellikle b\u00fcy\u00fck ve \u00e7ok say\u0131da plugin i\u00e7eren projelerde, geli\u015ftirme h\u0131z\u0131n\u0131 yava\u015flatabilir ve hata oran\u0131n\u0131 art\u0131rabilir.<\/p>\n<p>\u0130\u015fte tam da bu noktada Pillaro devreye giriyor. Pillaro, Dataverse plugin geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini modernle\u015ftirmek, otomatikle\u015ftirmek ve basitle\u015ftirmek amac\u0131yla tasarlanm\u0131\u015f yeni nesil bir ara\u00e7t\u0131r. Geli\u015ftiricilere daha iyi bir deneyim sunmakla kalmaz, ayn\u0131 zamanda CI\/CD pipeline&#8217;lar\u0131 (i\u015flem hatlar\u0131) ile m\u00fckemmel bir uyum sa\u011flayarak, yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc (SDLC) \u00e7ok daha verimli hale getirir. Pillaro&#8217;ya ge\u00e7i\u015f, sadece bir ara\u00e7 de\u011fi\u015fikli\u011fi de\u011fil, ayn\u0131 zamanda daha modern, esnek ve \u00f6l\u00e7eklenebilir bir geli\u015ftirme yakla\u015f\u0131m\u0131na do\u011fru at\u0131lan stratejik bir ad\u0131md\u0131r. Bu ge\u00e7i\u015f sayesinde, geli\u015ftirme ekipleri daha az manuel i\u015flemle, daha h\u0131zl\u0131 ve daha g\u00fcvenilir bir \u015fekilde pluginlerini Dataverse ortamlar\u0131na da\u011f\u0131tabilirler. Ayr\u0131ca, Pillaro&#8217;nun sundu\u011fu geli\u015fmi\u015f yap\u0131land\u0131rma se\u00e7enekleri ve komut sat\u0131r\u0131 aray\u00fcz\u00fc (CLI), otomasyon senaryolar\u0131n\u0131 zenginle\u015ftirerek, tekrarlayan g\u00f6revleri minimuma indirir. Bu makale, spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015fin neden gerekli oldu\u011funu anlaman\u0131za ve bu ge\u00e7i\u015fi ba\u015far\u0131l\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirmenize yard\u0131mc\u0131 olacak pratik bilgiler sunmaktad\u0131r. Amac\u0131m\u0131z, okuyucunun konuyu s\u0131f\u0131rdan \u00f6\u011frenebilece\u011fi, her ad\u0131mda destekleyici bilgilerle donat\u0131lm\u0131\u015f, samimi ama profesyonel bir rehber sunmakt\u0131r.<\/p>\n<h2>spkl ve Pillaro Nedir? Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f<\/h2>\n<p>Dataverse plugin geli\u015ftirme d\u00fcnyas\u0131nda iki \u00f6nemli arac\u0131 derinlemesine anlamak, ge\u00e7i\u015f s\u00fcrecini kavramak i\u00e7in hayati \u00f6neme sahiptir: spkl ve Pillaro. Her ikisi de pluginlerinizi Dataverse&#8217;e da\u011f\u0131tman\u0131za yard\u0131mc\u0131 olur, ancak yakla\u015f\u0131mlar\u0131 ve sunduklar\u0131 \u00f6zellikler bak\u0131m\u0131ndan \u00f6nemli farkl\u0131l\u0131klar g\u00f6sterirler.<\/p>\n<h3>spkl: Ge\u00e7mi\u015ften Gelen G\u00fcvenilir Ortak<\/h3>\n<p>spkl, &#8220;Solution Packager &amp; Kendo UI for Dataverse&#8221; k\u0131saltmas\u0131yla bilinen, uzun y\u0131llard\u0131r Dataverse (eski ad\u0131yla Dynamics 365 CE) geli\u015ftiricilerinin kulland\u0131\u011f\u0131 bir ara\u00e7 setidir. Temel olarak, pluginlerinizi Visual Studio \u00fczerinden derlemenize, imzalaman\u0131za ve Dataverse&#8217;e da\u011f\u0131tman\u0131za olanak tan\u0131r. spkl&#8217;nin en b\u00fcy\u00fck avantaj\u0131, Visual Studio entegrasyonunun derinli\u011fi ve kullan\u0131m kolayl\u0131\u011f\u0131d\u0131r. Projenize bir NuGet paketi olarak eklendi\u011finde, plugin derleme ve da\u011f\u0131t\u0131m g\u00f6revlerini do\u011frudan Visual Studio&#8217;dan y\u00fcr\u00fctebilirsiniz. Bu, \u00f6zellikle tek ba\u015f\u0131na \u00e7al\u0131\u015fan geli\u015ftiriciler veya k\u00fc\u00e7\u00fck ekipler i\u00e7in pratik bir \u00e7\u00f6z\u00fcm sunmu\u015ftur. spkl, plugin assembly&#8217;lerini (derlemelerini) Dataverse&#8217;e kaydetme, ad\u0131mlar\u0131 (steps) tan\u0131mlama ve servis u\u00e7 noktalar\u0131n\u0131 (service endpoints) y\u00f6netme gibi temel i\u015flevleri yerine getirir. Ancak, spkl&#8217;nin baz\u0131 dezavantajlar\u0131 da bulunmaktad\u0131r. \u00d6zellikle modern CI\/CD pipeline&#8217;lar\u0131 ile tam entegrasyon konusunda s\u0131n\u0131rlamalar\u0131 vard\u0131r. Yap\u0131land\u0131rma dosyalar\u0131 genellikle XML tabanl\u0131d\u0131r ve bu da b\u00fcy\u00fck projelerde y\u00f6netimi zorla\u015ft\u0131rabilir. Ayr\u0131ca, komut sat\u0131r\u0131 aray\u00fcz\u00fc (CLI) yetenekleri daha k\u0131s\u0131tl\u0131d\u0131r, bu da otomasyon senaryolar\u0131n\u0131 karma\u015f\u0131kla\u015ft\u0131rabilir. Bak\u0131m ve geli\u015ftirme h\u0131z\u0131 da, daha yeni ara\u00e7lara k\u0131yasla yava\u015flayabilmektedir.<\/p>\n<h3>Pillaro: Gelece\u011fin Modern \u00c7\u00f6z\u00fcm\u00fc<\/h3>\n<p>Pillaro, Dataverse plugin geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini modernle\u015ftirmek i\u00e7in tasarlanm\u0131\u015f, .NET CLI tabanl\u0131 yeni nesil bir ara\u00e7t\u0131r. Temel amac\u0131, geli\u015ftiricilere daha tutarl\u0131, otomatize edilebilir ve verimli bir deneyim sunmakt\u0131r. Pillaro, komut sat\u0131r\u0131 aray\u00fcz\u00fc merkezli bir yakla\u015f\u0131mla, derleme, imzalama, kay\u0131t ve da\u011f\u0131t\u0131m gibi t\u00fcm plugin ya\u015fam d\u00f6ng\u00fcs\u00fc ad\u0131mlar\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Bu CLI tabanl\u0131 yap\u0131, onu CI\/CD sistemleriyle m\u00fckemmel bir \u015fekilde entegre edilebilir k\u0131lar. Geli\u015ftiriciler, Pillaro&#8217;yu kullanarak tek bir komutla pluginlerini derleyebilir, test edebilir ve birden fazla Dataverse ortam\u0131na da\u011f\u0131tabilirler. Pillaro&#8217;nun sundu\u011fu ba\u015fl\u0131ca avantajlar \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Modern Yap\u0131land\u0131rma:<\/strong> Genellikle JSON veya YAML tabanl\u0131 yap\u0131land\u0131rma dosyalar\u0131 kullanarak, daha okunabilir ve y\u00f6netilebilir bir yap\u0131 sunar.<\/li>\n<li><strong>CLI Odakl\u0131l\u0131k:<\/strong> Komut sat\u0131r\u0131 aray\u00fcz\u00fc, otomasyon ve betik (script) yazma s\u00fcre\u00e7lerini basitle\u015ftirir, bu da CI\/CD pipeline&#8217;lar\u0131 i\u00e7in idealdir.<\/li>\n<li><strong>Tutarl\u0131l\u0131k:<\/strong> Farkl\u0131 geli\u015ftirme ve da\u011f\u0131t\u0131m ortamlar\u0131 aras\u0131nda tutarl\u0131 sonu\u00e7lar elde etmeyi kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Esneklik:<\/strong> Farkl\u0131 .NET framework (yaz\u0131l\u0131m \u00e7er\u00e7evesi) versiyonlar\u0131n\u0131 ve proje yap\u0131lar\u0131n\u0131 destekler.<\/li>\n<li><strong>Topluluk ve Geli\u015fim:<\/strong> Aktif bir topluluk taraf\u0131ndan desteklenir ve s\u00fcrekli olarak yeni \u00f6zelliklerle g\u00fcncellenir.<\/li>\n<\/ul>\n<p>Pillaro, ayn\u0131 zamanda pluginlerinizi geli\u015ftirirken kar\u015f\u0131la\u015fabilece\u011finiz ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, assembly versiyonlama (derleme versiyonlama) ve hata ay\u0131klama (debugging) gibi konularda da daha g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler sunar. Bu iki ara\u00e7 aras\u0131ndaki temel fark\u0131 anlamak, spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015fin sadece bir zorunluluk de\u011fil, ayn\u0131 zamanda bir iyile\u015ftirme ve modernizasyon f\u0131rsat\u0131 oldu\u011funu a\u00e7\u0131k\u00e7a ortaya koymaktad\u0131r. Pillaro&#8217;ya ge\u00e7i\u015f, geli\u015ftirme ekiplerinin Dataverse projelerinde daha \u00e7evik, daha g\u00fcvenilir ve daha verimli olmalar\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h2>Pillaro Ortam\u0131n\u0131 Kurulum ve \u0130lk Ad\u0131mlar: Projenizi Nas\u0131l Haz\u0131rlars\u0131n\u0131z?<\/h2>\n<p>spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015fin ilk ve en \u00f6nemli ad\u0131m\u0131, geli\u015ftirme ortam\u0131n\u0131z\u0131 Pillaro ile uyumlu hale getirmektir. Bu b\u00f6l\u00fcm, gerekli ara\u00e7lar\u0131 kurmaktan, yeni bir Pillaro projesi olu\u015fturmaya kadar ad\u0131m ad\u0131m t\u00fcm s\u00fcreci kapsamaktad\u0131r. Do\u011fru bir kurulum, sorunsuz bir ge\u00e7i\u015fin temelini olu\u015fturur.<\/p>\n<h3>Gerekli Ara\u00e7lar\u0131n Kurulumu<\/h3>\n<p>Pillaro ile \u00e7al\u0131\u015fabilmek i\u00e7in \u00f6ncelikle baz\u0131 temel geli\u015ftirme ara\u00e7lar\u0131n\u0131n sisteminizde kurulu olmas\u0131 gerekir:<\/p>\n<ol>\n<li><strong>.NET SDK:<\/strong> Pillaro, .NET Core veya .NET 5\/6\/7\/8 gibi modern .NET framework&#8217;lerini (yaz\u0131l\u0131m \u00e7er\u00e7evelerini) kullan\u0131r. En g\u00fcncel .NET SDK&#8217;s\u0131n\u0131 <a href=\"https:\/\/dotnet.microsoft.com\/download\">Microsoft&#8217;un resmi web sitesinden<\/a> indirip kurman\u0131z gerekmektedir. Genellikle Dataverse pluginleri i\u00e7in .NET Framework 4.6.2 veya .NET 4.7.2 hedef al\u0131n\u0131r, ancak Pillaro&#8217;nun kendisi modern .NET \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in SDK&#8217;n\u0131n kurulu olmas\u0131 \u015fartt\u0131r.<\/li>\n<li><strong>Visual Studio:<\/strong> Plugin kodunuzu yazmak ve hata ay\u0131klamak i\u00e7in g\u00fc\u00e7l\u00fc bir IDE (Entegre Geli\u015ftirme Ortam\u0131) olan Visual Studio (2019 veya 2022 \u00f6nerilir) gereklidir. .NET geli\u015ftirme i\u015f y\u00fck\u00fcn\u00fcn kurulu oldu\u011fundan emin olun.<\/li>\n<li><strong>Power Platform CLI:<\/strong> Pillaro, Power Platform CLI (Komut Sat\u0131r\u0131 Aray\u00fcz\u00fc) ile entegre \u00e7al\u0131\u015f\u0131r. Bu ara\u00e7, Dataverse ortamlar\u0131yla etkile\u015fim kurman\u0131z\u0131, \u00e7\u00f6z\u00fcmleri (solutions) y\u00f6netmenizi ve pluginleri da\u011f\u0131tman\u0131z\u0131 sa\u011flar. Power Platform CLI&#8217;y\u0131 <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/developer\/cli\/introduction\">Microsoft Docs<\/a> \u00fczerinden kurabilirsiniz. Kurulum genellikle <code>dotnet tool install --global Microsoft.PowerApps.CLI<\/code> komutu ile yap\u0131l\u0131r.<\/li>\n<\/ol>\n<h3>Pillaro&#8217;yu Projenize Entegre Etme<\/h3>\n<p>Pillaro&#8217;yu projenize eklemek i\u00e7in \u00f6ncelikle yeni bir .NET s\u0131n\u0131f kitapl\u0131\u011f\u0131 (class library) projesi olu\u015fturman\u0131z veya mevcut plugin projenizi uygun hale getirmeniz gerekir. Ard\u0131ndan, Pillaro&#8217;nun kendi CLI arac\u0131n\u0131 veya NuGet paketlerini kullanabilirsiniz. En yayg\u0131n y\u00f6ntem, Pillaro&#8217;nun NuGet paketini mevcut plugin projenize eklemektir.<\/p>\n<div class=\"code-container\">\n<pre><code>dotnet add package MSF.Pillaro.Core\ndotnet add package MSF.Pillaro.Sdk<\/code><\/pre>\n<\/div>\n<p>Bu komutlar, Pillaro&#8217;nun temel i\u015flevselli\u011fini ve Dataverse SDK ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 projenize ekler. Pillaro, pluginlerinizi derlemek ve da\u011f\u0131tmak i\u00e7in projenizin <code>.csproj<\/code> dosyas\u0131ndaki baz\u0131 yap\u0131land\u0131rmalara ihtiya\u00e7 duyar. \u00d6rnek bir <code>.csproj<\/code> dosya yap\u0131s\u0131 a\u015fa\u011f\u0131daki gibi olabilir:<\/p>\n<div class=\"code-container\">\n<pre><code>&lt;Project Sdk=\"Microsoft.NET.Sdk\"&gt;\n\n  &lt;PropertyGroup&gt;\n    &lt;TargetFramework&gt;net462&lt;\/TargetFramework&gt;\n    &lt;ImplicitUsings&gt;enable&lt;\/ImplicitUsings&gt;\n    &lt;Nullable&gt;enable&lt;\/Nullable&gt;\n    &lt;GeneratePlugin&gt;true&lt;\/GeneratePlugin&gt; &lt;!-- Pillaro i\u00e7in \u00f6nemli --&gt;\n    &lt;PluginRegistrationFile&gt;plugin.json&lt;\/PluginRegistrationFile&gt; &lt;!-- Pillaro yap\u0131land\u0131rma dosyas\u0131 --&gt;\n  &lt;\/PropertyGroup&gt;\n\n  &lt;ItemGroup&gt;\n    &lt;PackageReference Include=\"Microsoft.CrmSdk.CoreAssemblies\" Version=\"9.0.2.42\" \/&gt;\n    &lt;PackageReference Include=\"MSF.Pillaro.Core\" Version=\"1.0.0\" \/&gt;\n    &lt;PackageReference Include=\"MSF.Pillaro.Sdk\" Version=\"1.0.0\" \/&gt;\n  &lt;\/ItemGroup&gt;\n\n  &lt;ItemGroup&gt;\n    &lt;None Update=\"plugin.json\" CopyToOutputDirectory=\"PreserveNewest\" \/&gt;\n  &lt;\/ItemGroup&gt;\n\n&lt;\/Project&gt;<\/code><\/pre>\n<\/div>\n<p>Burada <code>&lt;GeneratePlugin&gt;true&lt;\/GeneratePlugin&gt;<\/code> ve <code>&lt;PluginRegistrationFile&gt;plugin.json&lt;\/PluginRegistrationFile&gt;<\/code> etiketleri, Pillaro&#8217;nun projenizi bir plugin projesi olarak tan\u0131mas\u0131 ve ilgili yap\u0131land\u0131rma dosyas\u0131n\u0131 kullanmas\u0131 i\u00e7in kritik \u00f6neme sahiptir. <code>CopyToOutputDirectory=\"PreserveNewest\"<\/code> ayar\u0131 ise <code>plugin.json<\/code> dosyas\u0131n\u0131n derleme \u00e7\u0131kt\u0131s\u0131 dizinine kopyalanmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Pillaro Yap\u0131land\u0131rma Dosyas\u0131: plugin.json<\/h3>\n<p>Pillaro, pluginlerinizin Dataverse&#8217;e nas\u0131l kaydedilece\u011fini tan\u0131mlamak i\u00e7in genellikle <code>plugin.json<\/code> ad\u0131nda bir yap\u0131land\u0131rma dosyas\u0131 kullan\u0131r. Bu dosya, plugin assembly&#8217;nizin ad\u0131n\u0131, i\u00e7indeki plugin s\u0131n\u0131flar\u0131n\u0131, ad\u0131mlar\u0131n\u0131 (steps), servis u\u00e7 noktalar\u0131n\u0131 (service endpoints) ve di\u011fer kay\u0131t detaylar\u0131n\u0131 i\u00e7erir. spkl&#8217;deki XML tabanl\u0131 <code>.csproj.user<\/code> veya <code>.crmregister<\/code> dosyalar\u0131na benzer bir i\u015flevi g\u00f6r\u00fcr, ancak JSON format\u0131 sayesinde daha modern ve okunabilir bir yap\u0131 sunar. \u00d6rnek bir <code>plugin.json<\/code> i\u00e7eri\u011fi:<\/p>\n<div class=\"code-container\">\n<pre><code>{\n  \"assembly\": {\n    \"name\": \"MyPillaroPlugins\",\n    \"solution\": \"MySolutionName\",\n    \"isolationMode\": \"Sandbox\",\n    \"sourceType\": \"Database\",\n    \"keyFile\": \"MyPillaroPlugins.snk\"\n  },\n  \"plugins\": [\n    {\n      \"typeName\": \"MyPillaroPlugins.MyFirstPlugin\",\n      \"friendlyName\": \"\u0130lk Pillaro Pluginim\",\n      \"description\": \"\u00d6rnek bir Pillaro plugin\",\n      \"steps\": [\n        {\n          \"message\": \"Create\",\n          \"primaryEntity\": \"account\",\n          \"secondaryEntity\": \"none\",\n          \"stage\": \"PreOperation\",\n          \"mode\": \"Synchronous\",\n          \"filteringAttributes\": \"\",\n          \"executionOrder\": 1,\n          \"unsecureConfiguration\": \"\",\n          \"secureConfiguration\": \"\"\n        }\n      ]\n    }\n  ]\n}<\/code><\/pre>\n<\/div>\n<p>Bu dosya, Pillaro&#8217;nun plugininizi Dataverse&#8217;e kaydederken ihtiya\u00e7 duydu\u011fu t\u00fcm bilgileri sa\u011flar. <code>assembly<\/code> b\u00f6l\u00fcm\u00fcnde derlemenin genel \u00f6zellikleri, <code>plugins<\/code> b\u00f6l\u00fcm\u00fcnde ise her bir plugin s\u0131n\u0131f\u0131n\u0131n ve ad\u0131mlar\u0131n\u0131n detaylar\u0131 yer al\u0131r. Bu yap\u0131land\u0131rman\u0131n do\u011fru bir \u015fekilde yap\u0131lmas\u0131, ge\u00e7i\u015f s\u00fcrecinin en kritik ad\u0131mlar\u0131ndan biridir. Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, Pillaro geli\u015ftirme ortam\u0131n\u0131z haz\u0131r olacak ve mevcut spkl plugin kodunuzu ta\u015f\u0131maya ba\u015flayabileceksiniz.<\/p>\n<h2>spkl Plugin Kodunu Pillaro&#8217;ya Adapte Etme: Ad\u0131m Ad\u0131m Ta\u015f\u0131ma S\u00fcreci<\/h2>\n<p>Mevcut spkl tabanl\u0131 plugin kodunuzu Pillaro&#8217;ya ta\u015f\u0131mak, asl\u0131nda bir kod yeniden yazma i\u015flemi de\u011fil, daha \u00e7ok mevcut kodun yeni bir ara\u00e7 ve yap\u0131land\u0131rma \u00e7er\u00e7evesine entegrasyonudur. \u00c7o\u011fu durumda, pluginlerinizin i\u015f mant\u0131\u011f\u0131 kodunda b\u00fcy\u00fck de\u011fi\u015fiklikler yapman\u0131z gerekmeyecektir. Ancak, proje yap\u0131s\u0131, referanslar ve derleme\/da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde baz\u0131 ayarlamalar yap\u0131lmas\u0131 \u015fartt\u0131r. Bu b\u00f6l\u00fcm, spkl&#8217;den Pillaro&#8217;ya kod ta\u015f\u0131ma s\u00fcrecini ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r.<\/p>\n<h3>1. Mevcut spkl Projesinden Kodun Ayr\u0131\u015ft\u0131r\u0131lmas\u0131<\/h3>\n<p>\u00d6ncelikle, spkl projenizin temel plugin kodunu, spkl&#8217;ye \u00f6zg\u00fc yap\u0131land\u0131rma ve da\u011f\u0131t\u0131m dosyalar\u0131ndan ay\u0131rman\u0131z gerekir. Genellikle, plugin s\u0131n\u0131flar\u0131n\u0131z (<code>IPlugin<\/code> aray\u00fcz\u00fcn\u00fc uygulayan s\u0131n\u0131flar) ve yard\u0131mc\u0131 s\u0131n\u0131flar\u0131n\u0131z (helper classes) do\u011frudan ta\u015f\u0131nabilir. spkl&#8217;nin <code>.csproj.user<\/code> veya <code>.crmregister<\/code> gibi dosyalar\u0131, Pillaro&#8217;da <code>plugin.json<\/code> dosyas\u0131 ile de\u011fi\u015ftirilecektir. Bu nedenle, bu eski yap\u0131land\u0131rma dosyalar\u0131n\u0131 g\u00f6z ard\u0131 edebilirsiniz.<\/p>\n<ul>\n<li>Mevcut spkl projenizin kaynak kodunu (<code>.cs<\/code> dosyalar\u0131) yeni bir dizine kopyalay\u0131n.<\/li>\n<li>Gereksiz spkl referanslar\u0131n\u0131 ve yap\u0131land\u0131rma dosyalar\u0131n\u0131 (\u00f6rn. <code>spkl.json<\/code>, <code>.crmregister<\/code>) bu kopyalanan dizinden \u00e7\u0131kar\u0131n.<\/li>\n<\/ul>\n<h3>2. Yeni Bir Pillaro Uyumlu Proje Olu\u015fturma<\/h3>\n<p>Yukar\u0131daki &#8220;Pillaro Ortam\u0131n\u0131 Kurulum&#8221; b\u00f6l\u00fcm\u00fcnde belirtildi\u011fi gibi, yeni bir .NET s\u0131n\u0131f kitapl\u0131\u011f\u0131 projesi olu\u015fturun ve Pillaro NuGet paketlerini ekleyin. Bu proje, ta\u015f\u0131nacak plugin kodunuzu bar\u0131nd\u0131racakt\u0131r. Hedef framework (yaz\u0131l\u0131m \u00e7er\u00e7evesi) olarak Dataverse&#8217;in destekledi\u011fi bir versiyonu (genellikle .NET Framework 4.6.2 veya 4.7.2) se\u00e7ti\u011finizden emin olun.<\/p>\n<div class=\"code-container\">\n<pre><code>dotnet new classlib -n MyPillaroPlugins\ncd MyPillaroPlugins\ndotnet add package Microsoft.CrmSdk.CoreAssemblies --version 9.0.2.42\ndotnet add package MSF.Pillaro.Core --version 1.0.0\ndotnet add package MSF.Pillaro.Sdk --version 1.0.0<\/code><\/pre>\n<\/div>\n<p>Bu komutlar, <code>MyPillaroPlugins<\/code> ad\u0131nda yeni bir proje olu\u015fturur ve gerekli NuGet paketlerini ekler. Ard\u0131ndan, <code>.csproj<\/code> dosyan\u0131z\u0131 Pillaro i\u00e7in yap\u0131land\u0131rmay\u0131 unutmay\u0131n (<code>&lt;GeneratePlugin&gt;true&lt;\/GeneratePlugin&gt;<\/code> ve <code>&lt;PluginRegistrationFile&gt;plugin.json&lt;\/PluginRegistrationFile&gt;<\/code>).<\/p>\n<h3>3. Plugin Kodunu Yeni Projeye Kopyalama ve D\u00fczenleme<\/h3>\n<p>\u015eimdi, spkl projesinden ay\u0131rd\u0131\u011f\u0131n\u0131z <code>.cs<\/code> dosyalar\u0131n\u0131 yeni olu\u015fturdu\u011funuz Pillaro projesine kopyalay\u0131n. Visual Studio&#8217;da projenizi a\u00e7t\u0131\u011f\u0131n\u0131zda, kopyalad\u0131\u011f\u0131n\u0131z dosyalar\u0131 &#8220;Add Existing Item&#8221; (Mevcut \u00d6\u011fe Ekle) se\u00e7ene\u011fiyle projeye dahil edebilirsiniz. \u00c7o\u011fu durumda, plugin kodunuzda \u00e7ok az de\u011fi\u015fiklik yapman\u0131z gerekecektir, \u00e7\u00fcnk\u00fc Dataverse SDK aray\u00fczleri (\u00f6rn. <code>IPlugin<\/code>) de\u011fi\u015fmemi\u015ftir.<\/p>\n<p>\u00d6rnek bir spkl plugin kodu:<\/p>\n<div class=\"code-container\">\n<pre><code>using Microsoft.Xrm.Sdk;\nusing System;\n\nnamespace MySpklPlugins\n{\n    public class AccountCreatePlugin : IPlugin\n    {\n        public void Execute(IServiceProvider serviceProvider)\n        {\n            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));\n            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));\n\n            if (context.InputParameters.Contains(\"Target\") &amp;&amp; context.InputParameters[\"Target\"] is Entity)\n            {\n                Entity entity = (Entity)context.InputParameters[\"Target\"];\n\n                if (entity.LogicalName == \"account\")\n                {\n                    entity[\"description\"] = \"Bu hesap spkl plugin taraf\u0131ndan olu\u015fturuldu.\";\n                    tracingService.Trace(\"Hesap a\u00e7\u0131klamas\u0131 g\u00fcncellendi.\");\n                }\n            }\n        }\n    }\n}<\/code><\/pre>\n<\/div>\n<p>Bu kod, Pillaro projenizde de ayn\u0131 \u015fekilde \u00e7al\u0131\u015facakt\u0131r. Tek yapman\u0131z gereken, namespace&#8217;i (isim alan\u0131) yeni projenizin ad\u0131yla e\u015fle\u015ftirmek olabilir (\u00f6rn. <code>MyPillaroPlugins<\/code>).<\/p>\n<h3>4. Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi ve Hedef Framework Uyumlulu\u011fu<\/h3>\n<p>Plugin kodunuzun kulland\u0131\u011f\u0131 t\u00fcm harici k\u00fct\u00fcphanelerin (third-party libraries) NuGet \u00fczerinden projenize eklendi\u011finden emin olun. spkl projenizde kulland\u0131\u011f\u0131n\u0131z t\u00fcm <code>PackageReference<\/code>&#8216;lar\u0131 (paket referanslar\u0131) yeni Pillaro projenizin <code>.csproj<\/code> dosyas\u0131na ta\u015f\u0131y\u0131n. Ayr\u0131ca, Dataverse pluginlerinin genellikle .NET Framework 4.6.2 veya 4.7.2&#8217;yi hedefledi\u011fini unutmay\u0131n. Projenizin <code>&lt;TargetFramework&gt;<\/code> ayar\u0131n\u0131 buna g\u00f6re yap\u0131land\u0131r\u0131n.<\/p>\n<p>E\u011fer pluginleriniz farkl\u0131 bir .NET Framework s\u00fcr\u00fcm\u00fcne ba\u011f\u0131ml\u0131ysa, Dataverse&#8217;in destekledi\u011fi s\u00fcr\u00fcmlerle uyumlu hale getirmek i\u00e7in gerekli de\u011fi\u015fiklikleri yapman\u0131z gerekebilir. Bu, genellikle k\u00fc\u00e7\u00fck kod d\u00fczenlemeleri veya baz\u0131 k\u00fct\u00fcphanelerin daha uyumlu versiyonlar\u0131n\u0131 kullanmay\u0131 gerektirebilir.<\/p>\n<h3>5. <code>plugin.json<\/code> Dosyas\u0131n\u0131 Olu\u015fturma ve Yap\u0131land\u0131rma<\/h3>\n<p>Bu ad\u0131m, spkl&#8217;deki kay\u0131t mekanizmas\u0131n\u0131n Pillaro&#8217;daki kar\u015f\u0131l\u0131\u011f\u0131d\u0131r. Mevcut spkl projenizdeki <code>.crmregister<\/code> veya <code>spkl.json<\/code> dosyalar\u0131ndan plugin adlar\u0131n\u0131z\u0131, ad\u0131mlar\u0131n\u0131z\u0131 (steps), filtreleme \u00f6zelliklerinizi (filtering attributes), execution order (y\u00fcr\u00fctme s\u0131ras\u0131) ve secure\/unsecure configuration (g\u00fcvenli\/g\u00fcvensiz yap\u0131land\u0131rma) bilgilerini toplay\u0131n. Bu bilgileri kullanarak, Pillaro i\u00e7in <code>plugin.json<\/code> dosyas\u0131n\u0131 olu\u015fturun. Her bir plugin s\u0131n\u0131f\u0131n\u0131z ve her bir kay\u0131t ad\u0131m\u0131n\u0131z i\u00e7in bu dosyada ilgili girdileri olu\u015fturman\u0131z gerekecektir. \u00d6rne\u011fin, yukar\u0131daki <code>AccountCreatePlugin<\/code> i\u00e7in <code>plugin.json<\/code>&#8216;da a\u015fa\u011f\u0131daki gibi bir giri\u015f bulunmal\u0131d\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>{\n  \"assembly\": {\n    \"name\": \"MyPillaroPlugins\",\n    \"solution\": \"MySolutionName\",\n    \"isolationMode\": \"Sandbox\",\n    \"sourceType\": \"Database\",\n    \"keyFile\": \"MyPillaroPlugins.snk\" &lt;!-- E\u011fer assembly'nizi imzal\u0131yorsan\u0131z --&gt;\n  },\n  \"plugins\": [\n    {\n      \"typeName\": \"MyPillaroPlugins.AccountCreatePlugin\",\n      \"friendlyName\": \"Hesap Olu\u015fturma Plugin\",\n      \"description\": \"Hesap olu\u015fturuldu\u011funda \u00e7al\u0131\u015fan plugin.\",\n      \"steps\": [\n        {\n          \"message\": \"Create\",\n          \"primaryEntity\": \"account\",\n          \"secondaryEntity\": \"none\",\n          \"stage\": \"PreOperation\",\n          \"mode\": \"Synchronous\",\n          \"filteringAttributes\": \"\",\n          \"executionOrder\": 1,\n          \"unsecureConfiguration\": \"\",\n          \"secureConfiguration\": \"\"\n        }\n      ]\n    }\n  ]\n}<\/code><\/pre>\n<\/div>\n<p><code>keyFile<\/code> \u00f6zelli\u011fi, derlemenizin g\u00fc\u00e7l\u00fc bir adla imzalanmas\u0131 (strong-name signing) i\u00e7in gereklidir. E\u011fer spkl projeniz imzal\u0131ysa, ayn\u0131 <code>.snk<\/code> dosyas\u0131n\u0131 Pillaro projenizde de kullanman\u0131z \u00f6nemlidir. Yeni bir <code>.snk<\/code> dosyas\u0131 olu\u015fturmak i\u00e7in Visual Studio&#8217;da projenizin \u00f6zelliklerine giderek &#8220;Signing&#8221; (\u0130mzalama) sekmesini kullanabilirsiniz.<\/p>\n<p>Bu ad\u0131mlar\u0131 dikkatlice takip ederek, spkl tabanl\u0131 plugin kodunuzu Pillaro&#8217;nun modern geli\u015ftirme ortam\u0131na ba\u015far\u0131yla adapte edebilir ve bir sonraki ad\u0131m olan derleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerine ge\u00e7i\u015f yapabilirsiniz.<\/p>\n<h2>Derleme ve Da\u011f\u0131t\u0131m S\u00fcre\u00e7lerini Otomatikle\u015ftirmek: CI\/CD Entegrasyonu Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015fin en b\u00fcy\u00fck avantajlar\u0131ndan biri, derleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini modern CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Teslimat) pipeline&#8217;lar\u0131 (i\u015flem hatlar\u0131) ile kolayca otomatikle\u015ftirebilmektir. Bu, geli\u015ftirme ekiplerinin daha h\u0131zl\u0131, daha g\u00fcvenilir ve daha tutarl\u0131 bir \u015fekilde yaz\u0131l\u0131m teslim etmelerini sa\u011flar. Bu b\u00f6l\u00fcmde, Pillaro&#8217;yu Azure DevOps, GitHub Actions gibi pop\u00fcler CI\/CD ara\u00e7lar\u0131yla nas\u0131l entegre edece\u011finizi ve otomatik derleme\/da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 inceleyece\u011fiz.<\/p>\n<h3>Pillaro CLI ile Temel Derleme ve Da\u011f\u0131t\u0131m Komutlar\u0131<\/h3>\n<p>Pillaro&#8217;nun g\u00fcc\u00fc, komut sat\u0131r\u0131 aray\u00fcz\u00fcnde (CLI) yatar. Bu CLI komutlar\u0131, CI\/CD pipeline&#8217;lar\u0131n\u0131zda kullan\u0131lacak temel yap\u0131 ta\u015flar\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>Derleme (Build):<\/strong> Plugin projenizi derlemek i\u00e7in standart .NET CLI komutunu kullanabilirsiniz:\n<div class=\"code-container\">\n<pre><code>dotnet build --configuration Release<\/code><\/pre>\n<\/p><\/div>\n<p>        Bu komut, projenizi derler ve Pillaro&#8217;nun anlayaca\u011f\u0131 formatta assembly&#8217;yi (derlemeyi) ve <code>plugin.json<\/code> dosyas\u0131n\u0131 \u00e7\u0131kt\u0131 dizinine yerle\u015ftirir.\n    <\/li>\n<li><strong>Kay\u0131t ve Da\u011f\u0131t\u0131m (Register &amp; Deploy):<\/strong> Pillaro CLI, derlenen pluginleri Dataverse&#8217;e kaydetmek ve da\u011f\u0131tmak i\u00e7in \u00f6zel komutlar sunar. \u00d6ncelikle, Power Platform CLI ile Dataverse ortam\u0131n\u0131za ba\u011flanman\u0131z gerekir:\n<div class=\"code-container\">\n<pre><code>pac auth create --url https:\/\/[ortam_ad\u0131].crm.dynamics.com<\/code><\/pre>\n<\/p><\/div>\n<p>        Ard\u0131ndan, Pillaro CLI&#8217;y\u0131 kullanarak plugininizi da\u011f\u0131tabilirsiniz. Bu, genellikle bir <code>.pcr<\/code> (Pillaro Configuration) dosyas\u0131 ile yap\u0131l\u0131r veya do\u011frudan komut sat\u0131r\u0131 arg\u00fcmanlar\u0131 ile tan\u0131mlan\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>Pillaro deploy --solution \"MySolutionName\" --pluginAssembly \"MyPillaroPlugins.dll\" --pluginConfig \"plugin.json\" --connection \"default\"<\/code><\/pre>\n<\/p><\/div>\n<p>        Burada <code>--solution<\/code> parametresi pluginin hangi Dataverse \u00e7\u00f6z\u00fcm\u00fcne eklenece\u011fini belirtir, <code>--pluginAssembly<\/code> derleme dosyas\u0131n\u0131n yolunu, <code>--pluginConfig<\/code> ise <code>plugin.json<\/code> dosyas\u0131n\u0131n yolunu g\u00f6sterir. <code>--connection<\/code> ise Power Platform CLI ile olu\u015fturdu\u011funuz ba\u011flant\u0131 profilini kullan\u0131r. Bu komut, plugin assembly&#8217;nizi Dataverse&#8217;e y\u00fckler ve <code>plugin.json<\/code> dosyas\u0131ndaki bilgilere g\u00f6re t\u00fcm ad\u0131mlar\u0131 ve tipleri kaydeder.\n    <\/li>\n<\/ul>\n<h3>CI\/CD Entegrasyonu: Azure DevOps ve GitHub Actions \u00d6rnekleri<\/h3>\n<p>Pillaro&#8217;yu CI\/CD pipeline&#8217;\u0131n\u0131za entegre etmek, manuel hatalar\u0131 azalt\u0131r ve da\u011f\u0131t\u0131m h\u0131z\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<h4>Azure DevOps Pipeline \u00d6rne\u011fi<\/h4>\n<p>Azure DevOps&#8217;ta bir YAML pipeline olu\u015fturarak Pillaro ile otomatik derleme ve da\u011f\u0131t\u0131m yapabilirsiniz. A\u015fa\u011f\u0131daki \u00f6rnek, temel ad\u0131mlar\u0131 g\u00f6stermektedir:<\/p>\n<div class=\"code-container\">\n<pre><code>trigger:\n- main\n\npool:\n  vmImage: 'windows-latest'\n\nvariables:\n  buildConfiguration: 'Release'\n  solutionName: 'MySolutionName'\n  pluginAssembly: 'MyPillaroPlugins.dll'\n  pluginConfig: 'plugin.json'\n  dataverseUrl: '$(DataverseUrl)' # Pipeline de\u011fi\u015fkeni olarak tan\u0131mlanmal\u0131\n  dataverseUser: '$(DataverseUser)' # Pipeline de\u011fi\u015fkeni olarak tan\u0131mlanmal\u0131\n  dataversePassword: '$(DataversePassword)' # G\u00fcvenli de\u011fi\u015fken olarak tan\u0131mlanmal\u0131\n\nsteps:\n- task: UseDotNet@2\n  displayName: 'Install .NET SDK'\n  inputs:\n    version: '6.x' # Projenizin hedefledi\u011fi .NET SDK s\u00fcr\u00fcm\u00fc\n\n- task: NuGetCommand@2\n  displayName: 'Restore NuGet Packages'\n  inputs:\n    command: 'restore'\n    restoreSolution: '**\/*.sln'\n\n- task: DotNetCoreCLI@2\n  displayName: 'Build Plugin Project'\n  inputs:\n    command: 'build'\n    projects: '**\/*.csproj'\n    arguments: '--configuration $(buildConfiguration)'\n\n- task: PowerPlatformToolInstaller@0\n  displayName: 'Install Power Platform CLI'\n\n- script: |\n    pac auth create --url $(dataverseUrl) --username $(dataverseUser) --password $(dataversePassword) --name \"MyServiceConnection\"\n    Pillaro deploy --solution $(solutionName) --pluginAssembly \"$(Build.SourcesDirectory)\/$(pluginAssembly)\" --pluginConfig \"$(Build.SourcesDirectory)\/$(pluginConfig)\" --connection \"MyServiceConnection\"\n  displayName: 'Deploy Plugin with Pillaro'\n  env:\n    # Pillaro CLI'n\u0131n path'ini ayarlamak gerekebilir\n    PATH: $(PATH);$(Agent.ToolsDirectory)\\PowerAppsCLI<\/code><\/pre>\n<\/div>\n<p>Bu pipeline, .NET SDK&#8217;y\u0131 kurar, NuGet paketlerini geri y\u00fckler, plugin projenizi derler, Power Platform CLI&#8217;y\u0131 kurar ve son olarak Pillaro CLI kullanarak plugininizi Dataverse&#8217;e da\u011f\u0131t\u0131r. <code>$(DataverseUrl)<\/code>, <code>$(DataverseUser)<\/code>, <code>$(DataversePassword)<\/code> gibi de\u011fi\u015fkenlerin Azure DevOps pipeline&#8217;\u0131n\u0131zda tan\u0131mlanmas\u0131 gerekti\u011fini unutmay\u0131n; \u00f6zellikle parola gibi hassas bilgiler i\u00e7in g\u00fcvenli de\u011fi\u015fkenler kullanmal\u0131s\u0131n\u0131z.<\/p>\n<h4>GitHub Actions Pipeline \u00d6rne\u011fi<\/h4>\n<p>GitHub Actions ile de benzer bir otomasyon kurabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>name: Deploy Dataverse Plugin with Pillaro\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  SOLUTION_NAME: MySolutionName\n  PLUGIN_ASSEMBLY: MyPillaroPlugins.dll\n  PLUGIN_CONFIG: plugin.json\n  DATAVERSE_URL: ${{ secrets.DATAVERSE_URL }}\n  DATAVERSE_USERNAME: ${{ secrets.DATAVERSE_USERNAME }}\n  DATAVERSE_PASSWORD: ${{ secrets.DATAVERSE_PASSWORD }}\n\njobs:\n  build-and-deploy:\n    runs-on: windows-latest\n\n    steps:\n    - uses: actions\/checkout@v3\n\n    - name: Setup .NET\n      uses: actions\/setup-dotnet@v3\n      with:\n        dotnet-version: '6.x' # Projenizin hedefledi\u011fi .NET SDK s\u00fcr\u00fcm\u00fc\n\n    - name: Restore dependencies\n      run: dotnet restore\n\n    - name: Build plugin project\n      run: dotnet build --configuration Release --no-restore\n\n    - name: Install Power Platform CLI\n      run: dotnet tool install --global Microsoft.PowerApps.CLI\n\n    - name: Deploy Plugin with Pillaro\n      run: |\n        pac auth create --url $env:DATAVERSE_URL --username $env:DATAVERSE_USERNAME --password $env:DATAVERSE_PASSWORD --name \"MyServiceConnection\"\n        Pillaro deploy --solution $env:SOLUTION_NAME --pluginAssembly \"${{ github.workspace }}\/MyPillaroPlugins\/bin\/Release\/net462\/$env:PLUGIN_ASSEMBLY\" --pluginConfig \"${{ github.workspace }}\/MyPillaroPlugins\/$env:PLUGIN_CONFIG\" --connection \"MyServiceConnection\"\n      shell: pwsh\n      env:\n        # Pillaro CLI'n\u0131n path'ini ayarlamak gerekebilir\n        PATH: ${{ env.PATH }};${{ github.action_path }}\\.dotnet\\tools<\/code><\/pre>\n<\/div>\n<p>GitHub Actions \u00f6rne\u011fi de benzer bir mant\u0131kla \u00e7al\u0131\u015f\u0131r. <code>secrets.DATAVERSE_URL<\/code> gibi de\u011fi\u015fkenler GitHub repository (depo) ayarlar\u0131ndaki &#8220;Secrets&#8221; b\u00f6l\u00fcm\u00fcnde tan\u0131mlanmal\u0131d\u0131r. Bu sayede hassas bilgiler g\u00fcvenli bir \u015fekilde saklan\u0131r. Hem Azure DevOps hem de GitHub Actions \u00f6rneklerinde, Pillaro CLI&#8217;n\u0131n sistem PATH&#8217;ine do\u011fru bir \u015fekilde eklendi\u011finden emin olmak \u00f6nemlidir; aksi takdirde &#8220;Pillaro&#8221; komutu bulunamayabilir.<\/p>\n<h3>Da\u011f\u0131t\u0131m Profilleri ve Ortam Y\u00f6netimi<\/h3>\n<p>Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, geli\u015ftirme (dev), test (test), kabul (UAT) ve \u00fcretim (prod) gibi farkl\u0131 Dataverse ortamlar\u0131na da\u011f\u0131t\u0131m yapman\u0131z gerekebilir. Pillaro, bu farkl\u0131 ortamlar i\u00e7in ayr\u0131 da\u011f\u0131t\u0131m profilleri tan\u0131mlaman\u0131za olanak tan\u0131r. <code>plugin.json<\/code> dosyas\u0131nda veya ayr\u0131 bir yap\u0131land\u0131rma dosyas\u0131nda ortam bazl\u0131 ayarlamalar yapabilir ve CI\/CD pipeline&#8217;\u0131n\u0131zda hangi profilin kullan\u0131laca\u011f\u0131n\u0131 belirleyebilirsiniz. Bu, her ortam i\u00e7in do\u011fru \u00e7\u00f6z\u00fcm ad\u0131n\u0131, g\u00fcvenlik ayarlar\u0131n\u0131 ve di\u011fer spesifik detaylar\u0131 uygulaman\u0131z\u0131 sa\u011flar. Bu otomasyon, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi standartla\u015ft\u0131r\u0131r, insan hatas\u0131n\u0131 en aza indirir ve Dataverse pluginlerinizin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc modern geli\u015ftirme pratikleriyle uyumlu hale getirir.<\/p>\n<h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcm Yollar\u0131: Ge\u00e7i\u015f S\u00fcrecinde Nelere Dikkat Etmeli?<\/h2>\n<p>spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015f s\u00fcreci genellikle sorunsuz ilerlese de, baz\u0131 yayg\u0131n zorluklarla kar\u015f\u0131la\u015fmak m\u00fcmk\u00fcnd\u00fcr. Bu b\u00f6l\u00fcmde, bu sorunlar\u0131 \u00f6nceden tahmin etmenize ve etkili \u00e7\u00f6z\u00fcmler bulman\u0131za yard\u0131mc\u0131 olacak ipu\u00e7lar\u0131 ve p\u00fcf noktalar\u0131 sunaca\u011f\u0131z.<\/p>\n<h3>1. Ba\u011f\u0131ml\u0131l\u0131k \u00c7ak\u0131\u015fmalar\u0131 (Dependency Conflicts)<\/h3>\n<p><strong>Sorun:<\/strong> Mevcut spkl projeniz, belirli versiyonlarda NuGet paketleri veya harici k\u00fct\u00fcphaneler kullan\u0131yor olabilir. Pillaro projenize ge\u00e7i\u015f yaparken, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131n yeni proje yap\u0131s\u0131yla veya Dataverse SDK&#8217;s\u0131n\u0131n gereksinimleriyle \u00e7ak\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. \u00d6zellikle farkl\u0131 k\u00fct\u00fcphanelerin ayn\u0131 DLL&#8217;in farkl\u0131 versiyonlar\u0131n\u0131 talep etmesi bu duruma yol a\u00e7abilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>NuGet Paketlerini G\u00fcncelleyin:<\/strong> M\u00fcmk\u00fcnse, t\u00fcm NuGet paketlerini en son kararl\u0131 (stable) s\u00fcr\u00fcmlerine g\u00fcncelleyin. Bu, bilinen \u00e7ak\u0131\u015fmalar\u0131 \u00e7\u00f6zebilir.<\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131k A\u011fac\u0131n\u0131 \u0130nceleyin:<\/strong> Visual Studio&#8217;da projenizin &#8220;Dependencies&#8221; (Ba\u011f\u0131ml\u0131l\u0131klar) alt\u0131nda &#8220;Packages&#8221; (Paketler) b\u00f6l\u00fcm\u00fcn\u00fc inceleyerek veya <code>dotnet list package --include-transitive<\/code> komutunu kullanarak ba\u011f\u0131ml\u0131l\u0131k a\u011fac\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyin. \u00c7ak\u0131\u015fan paketleri tespit edin.<\/li>\n<li><strong>Binding Redirects Kullan\u0131n:<\/strong> E\u011fer farkl\u0131 versiyonlarda bir DLL&#8217;e ihtiya\u00e7 duyan k\u00fct\u00fcphaneler varsa, <code>.config<\/code> dosyan\u0131zda binding redirects (ba\u011flama y\u00f6nlendirmeleri) kullanarak \u00e7al\u0131\u015fma zaman\u0131nda hangi versiyonun kullan\u0131laca\u011f\u0131n\u0131 belirleyebilirsiniz. Ancak, Dataverse pluginleri i\u00e7in bu genellikle \u00f6nerilmez ve sorunlara yol a\u00e7abilir. M\u00fcmk\u00fcnse, t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 tek bir uyumlu versiyonda tutmaya \u00e7al\u0131\u015f\u0131n.<\/li>\n<li><strong>Plugin Isolation Mode (\u0130zolasyon Modu):<\/strong> Dataverse pluginleri genellikle Sandbox (Korumal\u0131 Alan) izolasyon modunda \u00e7al\u0131\u015f\u0131r. Bu mod, belirli k\u00fct\u00fcphanelerin kullan\u0131m\u0131n\u0131 k\u0131s\u0131tlayabilir. E\u011fer bir k\u00fct\u00fcphane Sandbox uyumlu de\u011filse, bunu kullanmaktan ka\u00e7\u0131nmal\u0131s\u0131n\u0131z.<\/li>\n<\/ul>\n<h3>2. Hedef Framework Uyumsuzluklar\u0131<\/h3>\n<p><strong>Sorun:<\/strong> spkl projeniz eski bir .NET Framework s\u00fcr\u00fcm\u00fcn\u00fc hedefliyor olabilirken, Pillaro veya Dataverse&#8217;in kendisi belirli bir .NET Framework (yaz\u0131l\u0131m \u00e7er\u00e7evesi) s\u00fcr\u00fcm\u00fcn\u00fc (.NET Framework 4.6.2 veya 4.7.2 gibi) gerektirebilir. Bu uyumsuzluk derleme hatalar\u0131na veya \u00e7al\u0131\u015fma zaman\u0131 istisnalar\u0131na neden olabilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Do\u011fru Hedef Framework&#8217;\u00fc Ayarlay\u0131n:<\/strong> Pillaro projenizin <code>.csproj<\/code> dosyas\u0131nda <code>&lt;TargetFramework&gt;<\/code> de\u011ferini Dataverse&#8217;in destekledi\u011fi ve \u00f6nerdi\u011fi s\u00fcr\u00fcme ayarlay\u0131n (\u00f6rn. <code>net462<\/code> veya <code>net472<\/code>).<\/li>\n<li><strong>Kod \u0130ncelemesi:<\/strong> E\u011fer eski bir Framework&#8217;ten ge\u00e7iyorsan\u0131z, kulland\u0131\u011f\u0131n\u0131z baz\u0131 .NET API&#8217;lerinin yeni Framework&#8217;te de\u011fi\u015fip de\u011fi\u015fmedi\u011fini kontrol edin. Nadiren de olsa, baz\u0131 API&#8217;ler kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015f veya de\u011fi\u015ftirilmi\u015f olabilir.<\/li>\n<\/ul>\n<h3>3. Ortam Farkl\u0131l\u0131klar\u0131 ve Yap\u0131land\u0131rma Sorunlar\u0131<\/h3>\n<p><strong>Sorun:<\/strong> Geli\u015ftirme ortam\u0131n\u0131zda \u00e7al\u0131\u015fan bir plugin, test veya \u00fcretim ortam\u0131nda farkl\u0131 davranabilir veya da\u011f\u0131t\u0131lamayabilir. Bu, genellikle ortam de\u011fi\u015fkenleri, ba\u011flant\u0131 dizeleri veya g\u00fcvenli\/g\u00fcvensiz yap\u0131land\u0131rma (secure\/unsecure configuration) farkl\u0131l\u0131klar\u0131ndan kaynaklan\u0131r.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Ortam Bazl\u0131 Yap\u0131land\u0131rma:<\/strong> Pillaro&#8217;nun da\u011f\u0131t\u0131m profili veya <code>plugin.json<\/code> dosyas\u0131nda ortam bazl\u0131 ayarlamalar yapma yetene\u011fini kullan\u0131n. Her ortam i\u00e7in spesifik de\u011ferler tan\u0131mlayarak tutarl\u0131l\u0131k sa\u011flay\u0131n.<\/li>\n<li><strong>CI\/CD De\u011fi\u015fkenleri:<\/strong> Hassas bilgileri (veritaban\u0131 ba\u011flant\u0131 dizeleri, API anahtarlar\u0131 vb.) CI\/CD pipeline&#8217;\u0131n\u0131zda g\u00fcvenli de\u011fi\u015fkenler (secrets) olarak tan\u0131mlay\u0131n ve bunlar\u0131 Pillaro da\u011f\u0131t\u0131m komutlar\u0131n\u0131za dinamik olarak ge\u00e7irin.<\/li>\n<li><strong>Hata Ay\u0131klama (Debugging) ve \u0130zleme (Monitoring):<\/strong> Dataverse&#8217;in tracing (izleme) hizmetini ve Pillaro&#8217;nun sundu\u011fu hata ay\u0131klama \u00f6zelliklerini kullanarak farkl\u0131 ortamlardaki davran\u0131\u015f farkl\u0131l\u0131klar\u0131n\u0131 tespit edin.<\/li>\n<\/ul>\n<h3>4. \u0130mzalama (Signing) ve \u00c7\u00f6z\u00fcm (Solution) \u0130li\u015fkilendirme<\/h3>\n<p><strong>Sorun:<\/strong> Plugin assembly&#8217;nizin g\u00fc\u00e7l\u00fc bir adla imzalanmas\u0131 (strong-name signing) gerekir. spkl projeniz imzal\u0131yken, Pillaro projenizde bu imzalama i\u015flemini do\u011fru yapmamak veya yanl\u0131\u015f <code>.snk<\/code> (strong-name key) dosyas\u0131n\u0131 kullanmak da\u011f\u0131t\u0131m hatalar\u0131na neden olabilir. Ayr\u0131ca, pluginin do\u011fru Dataverse \u00e7\u00f6z\u00fcm\u00fcne eklenmemesi de yayg\u0131n bir sorundur.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Ayn\u0131 <code>.snk<\/code> Dosyas\u0131n\u0131 Kullan\u0131n:<\/strong> spkl projenizde kulland\u0131\u011f\u0131n\u0131z <code>.snk<\/code> dosyas\u0131n\u0131 Pillaro projenizde de kullan\u0131n. E\u011fer yeni bir proje olu\u015fturduysan\u0131z, eski <code>.snk<\/code> dosyas\u0131n\u0131 kopyalay\u0131n ve projenizin \u00f6zelliklerinde &#8220;Signing&#8221; sekmesi alt\u0131nda referans g\u00f6sterin.<\/li>\n<li><strong><code>plugin.json<\/code> ve \u00c7\u00f6z\u00fcm Ad\u0131:<\/strong> <code>plugin.json<\/code> dosyas\u0131nda <code>assembly.solution<\/code> alan\u0131n\u0131n, plugininizi eklemek istedi\u011finiz Dataverse \u00e7\u00f6z\u00fcm\u00fcn\u00fcn benzersiz ad\u0131yla (unique name) tam olarak e\u015fle\u015fti\u011finden emin olun.<\/li>\n<li><strong>\u00c7\u00f6z\u00fcm Yay\u0131nlama:<\/strong> Plugininizi da\u011f\u0131tt\u0131ktan sonra, Dataverse&#8217;te ilgili \u00e7\u00f6z\u00fcm\u00fc yay\u0131nlamay\u0131 unutmay\u0131n. Aksi takdirde, plugin de\u011fi\u015fiklikleri aktif olmayabilir.<\/li>\n<\/ul>\n<h3>5. Performans Optimizasyonlar\u0131<\/h3>\n<p><strong>Sorun:<\/strong> Ge\u00e7i\u015f sonras\u0131 pluginlerinizin performans\u0131nda d\u00fc\u015f\u00fc\u015f ya\u015fand\u0131\u011f\u0131n\u0131 veya beklenenden daha yava\u015f \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 fark edebilirsiniz. Bu, genellikle hatal\u0131 ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi, gereksiz kod \u00e7al\u0131\u015ft\u0131rma veya kaynak t\u00fcketiminden kaynaklan\u0131r.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Tracing Kullan\u0131m\u0131:<\/strong> Plugin kodunuzda <code>ITracingService<\/code> kullanarak kritik noktalarda loglar (g\u00fcnl\u00fckler) tutun. Bu, performans darbo\u011fazlar\u0131n\u0131 belirlemenize yard\u0131mc\u0131 olur.<\/li>\n<li><strong>Erken \u00c7\u0131k\u0131\u015f ve Ko\u015fullu \u00c7al\u0131\u015fma:<\/strong> Pluginlerinizin sadece gerekli durumlarda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flay\u0131n. \u00d6rne\u011fin, <code>context.Depth<\/code> kontrol\u00fc veya <code>filteringAttributes<\/code> kullan\u0131m\u0131 ile gereksiz tetiklenmeleri \u00f6nleyin.<\/li>\n<li><strong>Asenkron Operasyonlar:<\/strong> E\u011fer m\u00fcmk\u00fcnse ve i\u015f mant\u0131\u011f\u0131n\u0131z izin veriyorsa, uzun s\u00fcren i\u015flemleri asenkron (e\u015fzamans\u0131z) pluginlere veya Azure Functions gibi harici servislere ta\u015f\u0131yarak ana i\u015flem hatt\u0131n\u0131 (main pipeline) rahatlat\u0131n.<\/li>\n<li><strong>Verimli Sorgular:<\/strong> Dataverse&#8217;e yap\u0131lan sorgular\u0131n (queries) optimize edildi\u011finden ve sadece gerekli verilerin \u00e7ekildi\u011finden emin olun.<\/li>\n<\/ul>\n<p>Bu s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015f s\u00fcrecini daha bilin\u00e7li ve sorunsuz bir \u015fekilde y\u00f6netebilirsiniz. Planl\u0131 bir yakla\u015f\u0131m ve detayl\u0131 testler, ba\u015far\u0131l\u0131 bir ge\u00e7i\u015fin anahtar\u0131d\u0131r.<\/p>\n<h2>Vaka Analizi: B\u00fcy\u00fck Bir Projenin spkl&#8217;den Pillaro&#8217;ya Ge\u00e7i\u015f Hikayesi<\/h2>\n<p>Bir yaz\u0131l\u0131m projesinde teknoloji de\u011fi\u015fikli\u011fi yapmak, \u00f6zellikle de kritik i\u015f s\u00fcre\u00e7lerini y\u00f6neten pluginler s\u00f6z konusu oldu\u011funda, her zaman belirli riskleri ve zorluklar\u0131 beraberinde getirir. Ancak do\u011fru planlama ve ara\u00e7larla bu s\u00fcre\u00e7, projenin gelece\u011fi i\u00e7in b\u00fcy\u00fck faydalar sa\u011flayabilir. \u0130\u015fte &#8220;MegaCRM&#8221; ad\u0131n\u0131 verdi\u011fimiz, finans sekt\u00f6r\u00fcnde faaliyet g\u00f6steren b\u00fcy\u00fck bir \u015firketin, Dataverse pluginlerini spkl&#8217;den Pillaro&#8217;ya ta\u015f\u0131ma hikayesi.<\/p>\n<h3>MegaCRM&#8217;in Durumu ve Ge\u00e7i\u015f \u0130htiyac\u0131<\/h3>\n<p>MegaCRM, m\u00fc\u015fterileri i\u00e7in y\u00fczlerce \u00f6zel i\u015f kural\u0131n\u0131 ve entegrasyonu y\u00f6neten, yakla\u015f\u0131k 50 farkl\u0131 plugin i\u00e7eren b\u00fcy\u00fck bir Dataverse uygulamas\u0131na sahipti. Bu pluginlerin tamam\u0131, uzun y\u0131llard\u0131r spkl kullan\u0131larak geli\u015ftiriliyor ve da\u011f\u0131t\u0131l\u0131yordu. Geli\u015ftirme ekibi, spkl&#8217;nin sundu\u011fu kolayl\u0131klardan faydalanm\u0131\u015f olsa da, zamanla baz\u0131 ciddi sorunlarla kar\u015f\u0131la\u015fmaya ba\u015flad\u0131:<\/p>\n<ul>\n<li><strong>Da\u011f\u0131t\u0131m S\u00fcre\u00e7lerindeki Yava\u015fl\u0131k ve Hatalar:<\/strong> Her da\u011f\u0131t\u0131m, manuel ad\u0131mlar i\u00e7erdi\u011fi i\u00e7in zaman al\u0131c\u0131yd\u0131 ve insan hatas\u0131na a\u00e7\u0131kt\u0131. \u00d6zellikle birden fazla ortama (Geli\u015ftirme, Test, UAT, \u00dcretim) da\u011f\u0131t\u0131m yaparken tutarl\u0131l\u0131k sorunlar\u0131 ya\u015fan\u0131yordu.<\/li>\n<li><strong>CI\/CD Entegrasyon Zorluklar\u0131:<\/strong> Mevcut Azure DevOps pipeline&#8217;lar\u0131, spkl&#8217;nin s\u0131n\u0131rl\u0131 CLI deste\u011fi nedeniyle karma\u015f\u0131k betikler (scripts) ve ge\u00e7ici \u00e7\u00f6z\u00fcmlerle doluydu. Bu da pipeline&#8217;lar\u0131n bak\u0131m\u0131n\u0131 zorla\u015ft\u0131r\u0131yordu.<\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi Karma\u015fas\u0131:<\/strong> Farkl\u0131 pluginler farkl\u0131 NuGet paket versiyonlar\u0131 kullan\u0131yordu ve bu da zaman zaman derleme ve \u00e7al\u0131\u015fma zaman\u0131 \u00e7ak\u0131\u015fmalar\u0131na yol a\u00e7\u0131yordu.<\/li>\n<li><strong>Yeni Geli\u015ftiricilerin Adaptasyonu:<\/strong> spkl&#8217;nin kendine \u00f6zg\u00fc yap\u0131land\u0131rma dosyalar\u0131, yeni ekibe kat\u0131lan geli\u015ftiricilerin adaptasyon s\u00fcrecini uzat\u0131yordu.<\/li>\n<\/ul>\n<p>Bu sorunlar, MegaCRM&#8217;in geli\u015ftirme h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcyor ve yeni \u00f6zelliklerin pazara sunulmas\u0131n\u0131 geciktiriyordu. Bu nedenle, ekip, daha modern ve otomatize edilebilir bir \u00e7\u00f6z\u00fcm aray\u0131\u015f\u0131na girdi ve Pillaro&#8217;da karar k\u0131ld\u0131.<\/p>\n<h3>Ge\u00e7i\u015f S\u00fcreci ve Kar\u015f\u0131la\u015f\u0131lan Zorluklar<\/h3>\n<p>MegaCRM&#8217;in ge\u00e7i\u015f s\u00fcreci, a\u015fa\u011f\u0131daki ad\u0131mlarla planland\u0131 ve uyguland\u0131:<\/p>\n<ol>\n<li><strong>Pilot Proje Se\u00e7imi:<\/strong> T\u00fcm pluginleri ayn\u0131 anda ta\u015f\u0131mak yerine, ekip \u00f6ncelikle daha az kritik ve ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olan 5 pluginlik bir pilot proje se\u00e7ti. Bu, riskleri minimize etmek ve Pillaro&#8217;yu tan\u0131mak i\u00e7in iyi bir f\u0131rsatt\u0131.<\/li>\n<li><strong>Pillaro Ortam Kurulumu:<\/strong> Geli\u015ftiricilerin t\u00fcm makinelerine .NET SDK, Visual Studio 2022 ve Power Platform CLI kuruldu. Pilot proje i\u00e7in yeni bir .NET s\u0131n\u0131f kitapl\u0131\u011f\u0131 projesi olu\u015fturuldu ve Pillaro NuGet paketleri eklendi.<\/li>\n<li><strong>Kod Ta\u015f\u0131ma ve <code>plugin.json<\/code> Olu\u015fturma:<\/strong> Pilot pluginlerin kodlar\u0131 yeni Pillaro projesine kopyaland\u0131. spkl&#8217;nin <code>.crmregister<\/code> dosyalar\u0131ndaki t\u00fcm kay\u0131t bilgileri (plugin s\u0131n\u0131flar\u0131, ad\u0131mlar, filtreler vb.) tek tek analiz edilerek <code>plugin.json<\/code> dosyalar\u0131na aktar\u0131ld\u0131. Bu a\u015famada, eski spkl projesindeki baz\u0131 custom (\u00f6zel) helper (yard\u0131mc\u0131) s\u0131n\u0131flar\u0131n, Dataverse SDK&#8217;s\u0131n\u0131n yeni versiyonlar\u0131yla uyumlu hale getirilmesi gerekti.<\/li>\n<li><strong>CI\/CD Pipeline Entegrasyonu:<\/strong> Azure DevOps&#8217;ta, pilot proje i\u00e7in yeni bir YAML pipeline olu\u015fturuldu. Bu pipeline, .NET build (derleme), Power Platform CLI kurulumu ve Pillaro deploy (da\u011f\u0131t\u0131m) ad\u0131mlar\u0131n\u0131 i\u00e7eriyordu. \u0130lk denemelerde, Pillaro CLI&#8217;n\u0131n PATH de\u011fi\u015fkeninde bulunamamas\u0131 gibi k\u00fc\u00e7\u00fck sorunlar ya\u015fansa da, PATH ayarlar\u0131 d\u00fczeltilerek bu sorun a\u015f\u0131ld\u0131.<\/li>\n<li><strong>Test ve Do\u011frulama:<\/strong> Da\u011f\u0131t\u0131lan pilot pluginler, manuel ve otomatik testlerle kapsaml\u0131 bir \u015fekilde test edildi. \u00d6zellikle farkl\u0131 senaryolarda (olu\u015fturma, g\u00fcncelleme, silme) pluginlerin do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve performans kayb\u0131 ya\u015fanmad\u0131\u011f\u0131ndan emin olundu.<\/li>\n<\/ol>\n<p>En b\u00fcy\u00fck zorluklardan biri, eski spkl projesindeki ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00e7\u00f6zmek oldu. Baz\u0131 pluginler, art\u0131k g\u00fcncel olmayan k\u00fct\u00fcphanelere ba\u011f\u0131ml\u0131yd\u0131 ve bu k\u00fct\u00fcphanelerin yeni .NET Framework ile uyumlu versiyonlar\u0131n\u0131 bulmak veya alternatif \u00e7\u00f6z\u00fcmler geli\u015ftirmek zaman ald\u0131. Ayr\u0131ca, <code>plugin.json<\/code> dosyas\u0131ndaki her bir ad\u0131m\u0131n do\u011fru bir \u015fekilde tan\u0131mland\u0131\u011f\u0131ndan emin olmak, \u00f6zellikle \u00e7ok say\u0131da filtrelenmi\u015f \u00f6zellik (filtering attributes) i\u00e7eren karma\u015f\u0131k pluginler i\u00e7in dikkatli bir \u00e7al\u0131\u015fma gerektirdi.<\/p>\n<h3>Elde Edilen Faydalar<\/h3>\n<p>Pilot projenin ba\u015far\u0131l\u0131 bir \u015fekilde tamamlanmas\u0131n\u0131n ard\u0131ndan, MegaCRM ekibi kalan t\u00fcm pluginleri de a\u015famal\u0131 olarak Pillaro&#8217;ya ta\u015f\u0131d\u0131. Bu ge\u00e7i\u015fin sonucunda elde edilen ba\u015fl\u0131ca faydalar \u015funlar oldu:<\/p>\n<ul>\n<li><strong>Da\u011f\u0131t\u0131m S\u00fcre\u00e7lerinde %70 H\u0131zlanma:<\/strong> Manuel da\u011f\u0131t\u0131m ad\u0131mlar\u0131 ortadan kalkt\u0131\u011f\u0131 i\u00e7in, pluginlerin test ortam\u0131na da\u011f\u0131t\u0131m\u0131 30 dakikadan 5 dakikaya d\u00fc\u015ft\u00fc. \u00dcretim ortam\u0131na da\u011f\u0131t\u0131m s\u00fcresi de \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131sald\u0131.<\/li>\n<li><strong>Hata Oran\u0131nda Azalma:<\/strong> Otomatik da\u011f\u0131t\u0131m sayesinde insan hatas\u0131 kaynakl\u0131 sorunlar neredeyse tamamen ortadan kalkt\u0131.<\/li>\n<li><strong>Geli\u015fmi\u015f CI\/CD Entegrasyonu:<\/strong> Azure DevOps pipeline&#8217;lar\u0131 daha temiz, daha anla\u015f\u0131l\u0131r ve daha kolay bak\u0131m\u0131 yap\u0131labilir hale geldi. Yeni geli\u015ftiricilerin pipeline&#8217;lar\u0131 anlamas\u0131 ve kullanmas\u0131 kolayla\u015ft\u0131.<\/li>\n<li><strong>Daha \u0130yi Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi:<\/strong> Pillaro&#8217;nun modern yakla\u015f\u0131m\u0131 sayesinde ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131 daha kolay tespit edildi ve \u00e7\u00f6z\u00fcld\u00fc, bu da projenin genel stabilitesini art\u0131rd\u0131.<\/li>\n<li><strong>Gelece\u011fe Y\u00f6nelik Esneklik:<\/strong> Pillaro&#8217;ya ge\u00e7i\u015f, MegaCRM&#8217;i gelecekteki Dataverse ve .NET g\u00fcncellemelerine kar\u015f\u0131 daha esnek hale getirdi.<\/li>\n<\/ul>\n<p>MegaCRM&#8217;in hikayesi, spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015fin ba\u015flang\u0131\u00e7ta baz\u0131 zorluklar i\u00e7erse de, uzun vadede geli\u015ftirme verimlili\u011fi, proje s\u00fcrd\u00fcr\u00fclebilirli\u011fi ve operasyonel g\u00fcvenilirlik a\u00e7\u0131s\u0131ndan \u00f6nemli avantajlar sa\u011flayabilece\u011fini g\u00f6stermektedir. Do\u011fru planlama, ad\u0131m ad\u0131m ilerleme ve kar\u015f\u0131la\u015f\u0131lan sorunlara proaktif yakla\u015f\u0131mlar, b\u00f6yle b\u00fcy\u00fck bir ge\u00e7i\u015fin anahtar\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7: Gelece\u011fe Y\u00f6nelik Dataverse Plugin Geli\u015ftirme<\/h2>\n<p>Dataverse platformunda plugin geli\u015ftirme, i\u015f s\u00fcre\u00e7lerini otomatikle\u015ftirmek ve \u00f6zelle\u015ftirmek i\u00e7in vazge\u00e7ilmez bir y\u00f6ntemdir. Ancak bu alandaki ara\u00e7lar ve en iyi uygulamalar s\u00fcrekli olarak evrim ge\u00e7irmektedir. spkl gibi ge\u00e7mi\u015fte de\u011ferli hizmetler sunmu\u015f ara\u00e7lar, modern geli\u015ftirme pratiklerinin ve CI\/CD beklentilerinin gerisinde kalabilir. Bu rehberde ele ald\u0131\u011f\u0131m\u0131z gibi, spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015f, sadece bir ara\u00e7 de\u011fi\u015fikli\u011fi de\u011fil, ayn\u0131 zamanda Dataverse plugin geli\u015ftirme s\u00fcre\u00e7lerinizi modernle\u015ftirmek, otomatikle\u015ftirmek ve gelece\u011fe haz\u0131rlamak i\u00e7in stratejik bir yat\u0131r\u0131md\u0131r. Pillaro&#8217;nun sundu\u011fu komut sat\u0131r\u0131 odakl\u0131 yakla\u015f\u0131m, esnek yap\u0131land\u0131rma se\u00e7enekleri ve CI\/CD entegrasyon yetenekleri, geli\u015ftirme ekiplerinin daha h\u0131zl\u0131, daha g\u00fcvenilir ve daha verimli \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamaktad\u0131r. Ge\u00e7i\u015f s\u00fcreci ba\u015flang\u0131\u00e7ta baz\u0131 zorluklar\u0131 beraberinde getirse de, do\u011fru planlama, ad\u0131m ad\u0131m uygulama ve kar\u015f\u0131la\u015f\u0131lan sorunlara y\u00f6nelik proaktif \u00e7\u00f6z\u00fcmlerle bu s\u00fcre\u00e7 ba\u015far\u0131yla tamamlanabilir. Unutmay\u0131n, teknolojiye ayak uydurmak ve s\u00fcrekli iyile\u015ftirme, rekabet\u00e7i kalman\u0131n ve yaz\u0131l\u0131m kalitesini art\u0131rman\u0131n anahtar\u0131d\u0131r. Pillaro ile Dataverse pluginlerinizin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc g\u00fc\u00e7lendirin ve gelece\u011fe g\u00fcvenle ilerleyin.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. spkl&#8217;den Pillaro&#8217;ya ge\u00e7i\u015f ne kadar s\u00fcrer?<\/strong><\/p>\n<p>Ge\u00e7i\u015f s\u00fcresi, projenizin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, plugin say\u0131s\u0131na, ba\u011f\u0131ml\u0131l\u0131klar\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na ve ekibinizin Pillaro&#8217;ya a\u015final\u0131\u011f\u0131na g\u00f6re de\u011fi\u015fir. K\u00fc\u00e7\u00fck projeler birka\u00e7 g\u00fcn i\u00e7inde tamamlanabilirken, y\u00fczlerce plugin i\u00e7eren b\u00fcy\u00fck projeler birka\u00e7 hafta veya ay s\u00fcrebilir. Pilot proje yakla\u015f\u0131m\u0131yla a\u015famal\u0131 ge\u00e7i\u015f yapmak genellikle en iyi stratejidir.<\/p>\n<p><strong>2. Mevcut plugin kodumu tamamen yeniden yazmam gerekiyor mu?<\/strong><\/p>\n<p>Hay\u0131r, \u00e7o\u011fu durumda mevcut plugin i\u015f mant\u0131\u011f\u0131 kodunuzu yeniden yazman\u0131z gerekmez. Pillaro, Dataverse SDK&#8217;s\u0131n\u0131 kulland\u0131\u011f\u0131 i\u00e7in, <code>IPlugin<\/code> aray\u00fcz\u00fcn\u00fc uygulayan s\u0131n\u0131flar\u0131n\u0131z genellikle do\u011frudan ta\u015f\u0131nabilir. Ana de\u011fi\u015fiklikler proje yap\u0131s\u0131, ba\u011f\u0131ml\u0131l\u0131k referanslar\u0131 ve da\u011f\u0131t\u0131m yap\u0131land\u0131rmas\u0131nda (<code>plugin.json<\/code>) olacakt\u0131r.<\/p>\n<p><strong>3. Pillaro \u00fccretli mi?<\/strong><\/p>\n<p>Pillaro&#8217;nun temel s\u00fcr\u00fcm\u00fc genellikle a\u00e7\u0131k kaynak (open-source) veya \u00fccretsizdir, ancak belirli geli\u015fmi\u015f \u00f6zellikler veya kurumsal destek i\u00e7in \u00fccretli s\u00fcr\u00fcmleri veya hizmetleri olabilir. En g\u00fcncel lisanslama bilgileri i\u00e7in Pillaro&#8217;nun resmi belgelerini veya GitHub deposunu kontrol etmeniz \u00f6nerilir.<\/p>\n<p><strong>4. Ge\u00e7i\u015f sonras\u0131 eski spkl dosyalar\u0131n\u0131 ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p>Ge\u00e7i\u015f tamamland\u0131ktan ve Pillaro tabanl\u0131 pluginleriniz \u00fcretim ortam\u0131nda stabil bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olduktan sonra, eski spkl&#8217;ye \u00f6zg\u00fc yap\u0131land\u0131rma dosyalar\u0131n\u0131 (\u00f6rn. <code>.crmregister<\/code>, <code>spkl.json<\/code>) projenizden kald\u0131rabilirsiniz. Ancak, olas\u0131 bir geri d\u00f6n\u00fc\u015f senaryosu i\u00e7in bu dosyalar\u0131 bir s\u00fcre kaynak kontrol sisteminizde (\u00f6rn. Git) tutman\u0131z faydal\u0131 olabilir.<\/p>\n<p><strong>5. Pillaro sadece .NET Core\/5\/6\/7\/8 i\u00e7in mi ge\u00e7erli?<\/strong><\/p>\n<p>Pillaro&#8217;nun kendisi modern .NET SDK&#8217;lar\u0131 \u00fczerinde \u00e7al\u0131\u015f\u0131r ve komut sat\u0131r\u0131 ara\u00e7lar\u0131 .NET Core\/5\/6\/7\/8 ortamlar\u0131nda kullan\u0131l\u0131r. Ancak, Pillaro ile da\u011f\u0131tt\u0131\u011f\u0131n\u0131z Dataverse pluginleri genellikle .NET Framework 4.6.2 veya 4.7.2 gibi Dataverse&#8217;in destekledi\u011fi eski .NET Framework s\u00fcr\u00fcmlerini hedefleyebilir. Pillaro, bu farkl\u0131 hedef framework&#8217;lerle uyumlu bir \u015fekilde \u00e7al\u0131\u015facak \u015fekilde tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>#Dataverse #PluginGeli\u015ftirme #Pillaro #spkl #CICD #PowerPlatform<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/dataverse-plugin-config-migration-simulation\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/dataverse-plugin-config-migration-simulation<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Microsoft Dataverse platformunda geli\u015ftirme yapan ekipler i\u00e7in plugin (eklenti) y\u00f6netimi ve da\u011f\u0131t\u0131m\u0131, projenin ba\u015far\u0131s\u0131nda kritik bir rol oynar.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-44863","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>spkl&#039;den Pillaro&#039;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"spkl&#039;den Pillaro&#039;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz\" \/>\n<meta property=\"og:description\" content=\"Microsoft Dataverse platformunda geli\u015ftirme yapan ekipler i\u00e7in plugin (eklenti) y\u00f6netimi ve da\u011f\u0131t\u0131m\u0131, projenin ba\u015far\u0131s\u0131nda kritik bir rol oynar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-23T18:09:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-23T18:10:25+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"32 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz\",\"datePublished\":\"2026-09-23T18:09:48+00:00\",\"dateModified\":\"2026-09-23T18:10:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\"},\"wordCount\":5619,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\",\"name\":\"spkl'den Pillaro'ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-23T18:09:48+00:00\",\"dateModified\":\"2026-09-23T18:10:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"spkl'den Pillaro'ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/","og_locale":"tr_TR","og_type":"article","og_title":"spkl'den Pillaro'ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz","og_description":"Microsoft Dataverse platformunda geli\u015ftirme yapan ekipler i\u00e7in plugin (eklenti) y\u00f6netimi ve da\u011f\u0131t\u0131m\u0131, projenin ba\u015far\u0131s\u0131nda kritik bir rol oynar.","og_url":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-23T18:09:48+00:00","article_modified_time":"2026-09-23T18:10:25+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"32 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz","datePublished":"2026-09-23T18:09:48+00:00","dateModified":"2026-09-23T18:10:25+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/"},"wordCount":5619,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/","url":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/","name":"spkl'den Pillaro'ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-23T18:09:48+00:00","dateModified":"2026-09-23T18:10:25+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/spklden-pillaroya-dataverse-plugin-gecisi-sorunsuz-bir-kilavuz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"spkl&#8217;den Pillaro&#8217;ya Dataverse Plugin Ge\u00e7i\u015fi: Sorunsuz Bir K\u0131lavuz"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=44863"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44863\/revisions"}],"predecessor-version":[{"id":44864,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44863\/revisions\/44864"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}