PowerShell ile UDE Ortamı Oluşturma
PowerShell ile UDE Ortamı Oluşturma
Serinin önceki yazısında Power Platform Admin Center arayüzünü kullanarak developer-enabled bir UDE ortamının nasıl oluşturulacağını ele almıştık.
Arayüz üzerinden ilerlemek özellikle ilk denemelerde çok faydalı oluyor. Hangi ekranda hangi seçenek var, Dynamics 365 apps nasıl aktif ediliyor, Platform Tools ve Provisioning App nereden kuruluyor, Developer Tools seçeneği nerede geliyor gibi konuları görmek süreci daha anlaşılır hale getiriyor.
Ancak gerçek hayatta, özellikle partner, ISV veya birden fazla ortam yöneten ekipler için her seferinde bu işlemleri arayüzden yapmak çok sürdürülebilir bir yöntem değil. Ortam oluşturma işleminin standart, tekrar edilebilir ve dokümante edilebilir olması gerekiyor.
Bu yazıda aynı işi PowerShell ile nasıl yapabileceğimize bakacağız.
Neden PowerShell?
PowerShell ile UDE ortamı oluşturmanın en önemli avantajı süreci standart hale getirmesidir.
Arayüzden ortam oluştururken birçok seçim manuel yapılır. Template seçimi, region, demo data, developer tools, dil, para birimi gibi ayarlar her seferinde kullanıcı tarafından belirlenir. Bu da doğal olarak hata ihtimalini artırır.
PowerShell tarafında ise bu kararları script içine alırız. Böylece aynı script farklı tenant, proje veya deneme ortamları için küçük değişikliklerle tekrar kullanılabilir.
Benim için PowerShell yaklaşımının avantajları şunlar:
- Ortam oluşturma süreci dokümante edilmiş olur.
- Hangi ayarlarla ortam oluşturulduğu netleşir.
- Manuel hata ihtimali azalır.
- Aynı yapı farklı projeler için tekrar kullanılabilir.
- Ekip içinde standart bir ortam oluşturma yaklaşımı oluşur.
- DevOps ve otomasyon süreçlerine bağlamak daha kolay hale gelir.
Özellikle birden fazla UDE ortamı oluşturacaksanız veya bunu ekip içinde standart bir pratik haline getirmek istiyorsanız PowerShell tarafını mutlaka öğrenmek gerekiyor.
Başlamadan önce
PowerShell ile ortam oluşturmak için öncelikle işlemi yapacak kullanıcının gerekli yetkilere sahip olması gerekir.
Genellikle aşağıdaki rollerden biri gerekir:
- Power Platform Administrator
- Dynamics 365 Administrator
- Global Administrator
Ayrıca tenant üzerinde uygun Finance & Operations lisansı ve yeterli kapasite bulunmalıdır.
Kontrol edilmesi gereken temel kapasite alanları:
- Dataverse database capacity
- Operations database capacity
Önemli not: UDE için Power Platform Developer Environment oluşturmayacağız. UDE, Finance & Operations developer tools özellikleri aktif edilmiş bir Sandbox ortamdır.
PowerShell modülünü yükleme
İlk olarak PowerShell’i yönetici olarak açıyoruz.
Power Platform admin işlemleri için gerekli modülü yüklüyoruz:
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
Daha önce bu modül yüklendiyse güncellemek için şu komutu kullanabiliriz:
Update-Module -Name Microsoft.PowerApps.Administration.PowerShell
Gerekirse modülü manuel olarak import edebiliriz:
Import-Module Microsoft.PowerApps.Administration.PowerShell
İlk kurulumda NuGet provider veya repository trust ile ilgili sorular gelebilir. Bunlar PowerShell modül kurulumlarında sık karşılaştığımız standart onaylardır.
Power Platform hesabıyla oturum açma
Power Platform’a bağlanmak için aşağıdaki komutu çalıştırıyoruz:
Add-PowerAppsAccount -Endpoint prod
Bu komut interaktif login ekranı açar. Burada admin yetkilerine sahip kullanıcıyla giriş yapılmalıdır.
Başarılı girişten sonra aynı PowerShell oturumu üzerinden admin komutlarını çalıştırabiliriz.
Kullanılabilir lokasyonları kontrol etme
Ortam oluştururken LocationName parametresini kullanacağız. Bu parametre için geçerli lokasyonları görmek amacıyla şu komutu çalıştırabiliriz:
Get-AdminPowerAppEnvironmentLocations
Bu komut tenant için kullanılabilir lokasyonları listeler.
Örnek olarak aşağıdaki gibi değerler görebilirsiniz:
- Europe
- UnitedStates
- Canada
- Asia
- Australia
Liste tenant, lisans ve bölge desteğine göre değişebilir. Finance & Operations uygulamalarını destekleyen bir bölge seçmek önemlidir.
Template bilgisini belirleme
Finance & Operations ortamını PowerShell ile oluştururken template kullanırız.
Sık kullanılan template örnekleri şunlardır:
D365_FinOps_Finance
D365_FinOps_SCM
D365_FinOps_ProjOps
D365_FinOps_Commerce
İlk UDE denemesi için genellikle Finance template yeterli olur:
D365_FinOps_Finance
SCM ağırlıklı bir geliştirme ortamı oluşturacaksanız şu template tercih edilebilir:
D365_FinOps_SCM
Burada template seçimi önemlidir. Çünkü ortamın hangi Finance & Operations uygulama kapsamıyla oluşacağını belirler.
Developer Tools ve Demo Data parametreleri
UDE ortamının developer-enabled olması için provisioning sırasında developer tools özelliğini aktif etmemiz gerekir.
PowerShell tarafında bunun karşılığı şudur:
DevToolsEnabled=true
Demo data kurulmasını istiyorsak şu parametreyi de ekleriz:
DemoDataEnabled=true
Bu parametreleri TemplateMetadata içinde vereceğiz.
Örnek JSON object şu şekilde hazırlanabilir:
$jsonObject = @"
{
"PostProvisioningPackages": [
{
"applicationUniqueName": "msdyn_FinanceAndOperationsProvisioningAppAnchor",
"parameters": "DevToolsEnabled=true|DemoDataEnabled=true"
}
]
}
"@ | ConvertFrom-Json
Burada en kritik nokta DevToolsEnabled=true parametresidir. Bu parametre olmazsa ortam developer-enabled UDE olarak oluşmaz.
Demo data istemiyorsanız parametreyi şu şekilde değiştirebilirsiniz:
$jsonObject = @"
{
"PostProvisioningPackages": [
{
"applicationUniqueName": "msdyn_FinanceAndOperationsProvisioningAppAnchor",
"parameters": "DevToolsEnabled=true|DemoDataEnabled=false"
}
]
}
"@ | ConvertFrom-Json
Benim yaklaşımım genelde şöyle:
Eğitim, demo, makale veya ilk deneme ortamlarında demo data kurmak faydalı oluyor. Contoso verisiyle formları açmak, süreçleri test etmek ve örnekler yapmak daha kolay.
Ancak gerçek proje geliştirme ortamlarında demo data kararı proje stratejisine göre verilmeli. Her ortamda demo data olması doğru bir tercih olmayabilir.
UDE ortamını oluşturma
Artık ortamı oluşturabiliriz.
Aşağıdaki örnek komut Finance template ile, demo data içeren developer-enabled bir UDE sandbox ortamı oluşturur:
New-AdminPowerAppEnvironment `
-DisplayName "dmrude01" `
-EnvironmentSku Sandbox `
-Templates "D365_FinOps_Finance" `
-TemplateMetadata $jsonObject `
-LocationName "Europe" `
-ProvisionDatabase `
-LanguageName 1033 `
-CurrencyName "USD"
Bu komutta kullanılan temel parametreler şunlardır:
| Parametre | Açıklama |
|---|---|
| DisplayName | Ortam adıdır. Kısa ve anlamlı olmalıdır. |
| EnvironmentSku | Ortam tipini belirtir. UDE için Sandbox kullanılır. |
| Templates | Hangi Finance & Operations template’inin kullanılacağını belirler. |
| TemplateMetadata | Developer tools ve demo data gibi provisioning parametrelerini taşır. |
| LocationName | Ortamın oluşturulacağı lokasyonu belirler. |
| ProvisionDatabase | Dataverse database oluşturulacağını belirtir. |
| LanguageName | Ortam dilini belirler. 1033 İngilizce için kullanılır. |
| CurrencyName | Varsayılan para birimini belirler. |
PowerShell notu: Örnekte komutu okunabilir olması için satır satır yazdım ve satır devam karakteri olarak backtick kullandım. Backtick karakteri satır sonunda olmalı ve sonrasında boşluk olmamalıdır. Aksi halde PowerShell komutu beklediğiniz gibi çalışmayabilir.
Ortamın oluşup oluşmadığını kontrol etme
Komut çalıştıktan sonra ortam listesini kontrol edebiliriz:
Get-AdminPowerAppEnvironment
Daha okunabilir bir çıktı için şu şekilde kullanmak daha pratik olur:
Get-AdminPowerAppEnvironment |
Select-Object DisplayName, EnvironmentName, Location, EnvironmentSku, CreatedTime
Belirli bir ortamı adına göre filtrelemek için:
Get-AdminPowerAppEnvironment |
Where-Object { $_.DisplayName -eq "dmrude01" }
Bu aşamada ortam listede görünebilir ama provisioning işlemi arka planda devam ediyor olabilir. Bu nedenle Power Platform Admin Center üzerinden de kontrol yapmak faydalı olur.
Power Platform Admin Center üzerinden kontrol
PowerShell ile ortam oluşturduktan sonra yine Power Platform Admin Center üzerinden kontrol yapmak gerekir.
Kontrol edilecek noktalar:
- Environment listesinde ortam görünüyor mu?
- Ortam tipi Sandbox mı?
- Dataverse URL oluşmuş mu?
- Finance and Operations URL oluşmuş mu?
- Dynamics 365 apps altında ilgili uygulamalar kurulmuş mu?
- Provisioning App status değeri Installed mı?
PowerShell ile ortamı oluşturmuş olsak bile, ilk denemelerde PPAC üzerinden sonucu görmek sürecin oturması açısından faydalı oluyor.
Environment URL ve Finance and Operations URL kontrolü
Kurulum tamamlandıktan sonra ortam detay sayfasında iki farklı URL görürüz:
- Environment URL
- Finance and Operations URL
Bu ayrım UDE tarafında önemlidir.
Environment URL, Power Platform / Dataverse ortam URL’idir. Visual Studio bağlantısı yapılırken kullanılacak URL genellikle budur.
Finance and Operations URL ise kullanıcının Dynamics 365 Finance & Operations uygulamasını açtığı URL’dir.
İlk kurulumlarda bu iki URL sık karıştırılıyor. Bu nedenle ortam oluşturulduktan sonra ikisini de kontrol etmekte fayda var.
Scriptin tam hali
Aşağıda temel bir script örneği yer alıyor.
Bu script Finance template ile demo data içeren developer-enabled bir UDE sandbox ortamı oluşturur.
# Install module if needed
Install-Module -Name Microsoft.PowerApps.Administration.PowerShell -Scope CurrentUser -Force
# Import module
Import-Module Microsoft.PowerApps.Administration.PowerShell
# Login to Power Platform
Add-PowerAppsAccount -Endpoint prod
# Template metadata for UDE
$jsonObject = @"
{
"PostProvisioningPackages": [
{
"applicationUniqueName": "msdyn_FinanceAndOperationsProvisioningAppAnchor",
"parameters": "DevToolsEnabled=true|DemoDataEnabled=true"
}
]
}
"@ | ConvertFrom-Json
# Create UDE environment
New-AdminPowerAppEnvironment `
-DisplayName "dmrude01" `
-EnvironmentSku Sandbox `
-Templates "D365_FinOps_Finance" `
-TemplateMetadata $jsonObject `
-LocationName "Europe" `
-ProvisionDatabase `
-LanguageName 1033 `
-CurrencyName "USD"
# Check environments
Get-AdminPowerAppEnvironment |
Select-Object DisplayName, EnvironmentName, Location, EnvironmentSku, CreatedTime
Bu scripti kendi ortamınıza göre değiştirmeden çalıştırmayın. Özellikle aşağıdaki değerleri kontrol edin:
- DisplayName
- Templates
- LocationName
- LanguageName
- CurrencyName
- DemoDataEnabled
Demo data olmadan örnek script
Gerçek proje geliştirme ortamında demo data istemiyorsanız JSON object kısmını şu şekilde kullanabilirsiniz:
$jsonObject = @"
{
"PostProvisioningPackages": [
{
"applicationUniqueName": "msdyn_FinanceAndOperationsProvisioningAppAnchor",
"parameters": "DevToolsEnabled=true|DemoDataEnabled=false"
}
]
}
"@ | ConvertFrom-Json
Sonrasında ortam oluşturma komutu aynı şekilde çalıştırılabilir:
New-AdminPowerAppEnvironment `
-DisplayName "dmrude02" `
-EnvironmentSku Sandbox `
-Templates "D365_FinOps_Finance" `
-TemplateMetadata $jsonObject `
-LocationName "Europe" `
-ProvisionDatabase `
-LanguageName 1033 `
-CurrencyName "USD"
SCM template ile örnek
Supply Chain Management odaklı bir geliştirme ortamı oluşturmak için template değerini değiştirebiliriz:
New-AdminPowerAppEnvironment `
-DisplayName "dmrscmude01" `
-EnvironmentSku Sandbox `
-Templates "D365_FinOps_SCM" `
-TemplateMetadata $jsonObject `
-LocationName "Europe" `
-ProvisionDatabase `
-LanguageName 1033 `
-CurrencyName "USD"
Bu küçük değişiklikle Finance yerine SCM template üzerinden ortam oluşturmuş oluruz.
Oluşturulan ortamı silme
Deneme ortamı oluşturduysanız ve artık kullanmayacaksanız ortamı silerek kapasiteyi geri kazanabilirsiniz.
Önce ortam bilgilerini alalım:
Get-AdminPowerAppEnvironment |
Select-Object DisplayName, EnvironmentName
Sonra ilgili environment id ile silme işlemi yapılabilir:
Remove-AdminPowerAppEnvironment -EnvironmentName "environment-guid"
Dikkat: Bu komutu kullanırken çok dikkatli olmak gerekir. Silme işlemi geri dönüşü zor bir işlemdir. Production veya aktif kullanılan bir ortamda kesinlikle denenmemelidir.
Ben genelde silme komutlarını makalelerde göstermeyi faydalı buluyorum ama gerçek tenant üzerinde çalışırken ekstra dikkat etmek gerekiyor. Özellikle aynı isimde birden fazla deneme ortamı varsa önce doğru environment id kontrol edilmeli.
PPAC ve PowerShell yöntemini karşılaştırma
İki yöntemin de kendine göre avantajları var.
| Konu | PPAC Arayüzü | PowerShell |
|---|---|---|
| Öğrenme kolaylığı | Daha kolay | Biraz teknik |
| Tekrarlanabilirlik | Düşük | Yüksek |
| Hata kontrolü | Manuel | Script ile daha standart |
| Ekip standardı | Zor | Daha kolay |
| Dokümantasyon | Görsel olarak iyi | Script olarak iyi |
| Otomasyon | Sınırlı | Güçlü |
| İlk deneme için uygunluk | Çok uygun | Orta |
| Partner / ISV kullanımı | Kullanılabilir | Daha uygun |
Benim önerim ilk ortamı Power Platform Admin Center arayüzüyle oluşturup ekranları ve mantığı anlamak, daha sonra PowerShell ile standart bir script oluşturmak.
Bu yaklaşım özellikle ekip içinde ortak bir çalışma standardı oluşturmak için daha sağlıklı.
Sık yapılan hatalar
PowerShell ile UDE ortamı oluştururken dikkat edilmesi gereken bazı noktalar var.
Developer Tools parametresini unutmak
UDE için en kritik parametre şudur:
DevToolsEnabled=true
Bu parametre verilmezse ortam developer-enabled UDE olarak oluşmaz.
Yanlış template kullanmak
Finance, SCM, Commerce veya Project Operations template seçimi ihtiyaca göre yapılmalıdır. Yanlış template, ortamın beklenen uygulama kapsamıyla oluşmamasına sebep olabilir.
Yanlış lokasyon seçmek
Seçilen bölgenin Finance & Operations uygulamalarını desteklemesi gerekir. Bu nedenle LocationName değeri rastgele verilmemelidir.
Kapasiteyi kontrol etmemek
Dataverse veya Operations database kapasitesi yetersizse ortam oluşturma ya da provisioning işlemi hata verebilir.
Backtick kullanımında hata yapmak
PowerShell’de satır devam karakteri olan backtick satır sonunda olmalı ve sonrasında boşluk olmamalıdır. Aksi halde komut parça parça çalışabilir veya syntax hatası verebilir.
Demo data kararını netleştirmemek
Eğitim ve test ortamlarında demo data faydalıdır. Ancak gerçek proje geliştirme ortamlarında bu karar proje stratejisine göre verilmelidir.
Yanlış URL kullanmak
Kurulum sonrasında Visual Studio bağlantısı için Environment URL, uygulamayı açmak için Finance and Operations URL kullanılmalıdır.
Kapanış
Bu yazıda PowerShell kullanarak Dynamics 365 Finance & Operations için developer-enabled UDE ortamı oluşturmayı ele aldık.
Power Platform Admin Center arayüzü süreci anlamak için çok faydalı. Ancak PowerShell yöntemi, ortam oluşturma işlemini daha standart ve tekrar edilebilir hale getiriyor.
Özellikle partner, ISV veya birden fazla müşteri ortamıyla çalışan ekiplerde PowerShell yaklaşımı ciddi avantaj sağlar. Hangi ortamın hangi ayarlarla oluşturulduğu net olur, aynı script farklı projelere uyarlanabilir ve manuel hata ihtimali azalır.
Bana göre ideal yaklaşım şu: Önce arayüzden bir ortam oluşturup süreci anlamak, sonra PowerShell ile bu süreci standart hale getirmek.
Bundan sonraki yazılarda artık oluşturduğumuz UDE ortamını geliştirme için kullanmaya başlayacağız. İlk adım olarak Visual Studio 2022 kurulumu, gerekli extension ve tool yapılandırmaları, metadata indirme ve UDE ortamına bağlanma konularına geçebiliriz.












No comments yet.