Veri Yönetiminde Yeni Bir Dönem: Microsoft Fabric ve Dynamics 365 Entegrasyonu nasıl yapılır?

Öncelikle Microsoft Fabric’i biraz tanıyalım: Microsoft Fabric, çeşitli veri yönetimi ve analitik çözümlerini tek bir platformda birleştiren, uçtan uca bir veri işleme ve analiz platformudur.

  • Temel Bileşenler:
    • Veri Entegrasyonu: Farklı veri kaynaklarını birleştirir.
    • Veri Hazırlama: Verileri temizlemek ve düzenlemek için araçlar sunar.
    • Veri Depolama ve Yönetimi: Azure Data Lake, SQL, NoSQL gibi çeşitli depolama seçenekleri mevcuttur.
    • Analitik: Veri analizini hızlandıran, yapay zeka destekli araçlar içerir.
  • Gelişmiş Özellikler:
    • Yapay zeka ve makine öğrenimi entegrasyonları mevcuttur.
    • Gerçek zamanlı analizler ve raporlama yapma imkanı sunar.
  • Microsoft Fabric’in Power Platform ile Entegrasyonu
    • Veri Analitiği ve Power BI: Fabric, özellikle Power BI ile sıkı bir entegrasyon içindedir. Power BI raporları Fabric üzerinden daha geniş veri kaynaklarıyla beslenir, böylece raporlamalar ve görselleştirmeler çok daha güçlü hale gelir.
    • Power Apps ile Veri Yönetimi: Microsoft Fabric, Power Apps ile entegre çalışarak, uygulamalar için gerekli verilerin doğrudan erişimini ve kullanımını sağlar. Veri yönetimi süreçlerini hızlandırır ve uygulamaların kullanıcı deneyimini iyileştirir.
    • Power Automate ile İş Akışlarının Otomasyonu: Power Automate, Microsoft Fabric’in sunduğu veri işleme yetenekleri ile birleştiğinde, veriler üzerinden tetiklenen otomatik iş akışları oluşturmak çok daha kolay hale gelir.
    • Power Virtual Agents ile Yapay Zeka Entegrasyonu: Fabric’in veri analizi yetenekleri, yapay zeka tabanlı çözümlerin geliştirilmesine katkıda bulunur ve Power Virtual Agents ile daha akıllı botlar oluşturulmasını sağlar.

Ön Şartlar

  1. Power BI Premium Lisansı veya Fabric Kapasitesi:
    • Dataverse ortamınızla aynı Azure bölgesinde bir Power BI premium lisansı veya Fabric kapasitesi gereklidir. Desteklenen premium kapasite seçenekleri şunlardır: “P1″, “P2″, “P3″, “P4″, “P5″, “F2″, “F4″, “F8″, “F16″, “F32″, “F64″, “F128″, “F256″, “F512″, “F1024″, “F2048″, “DCT1″, “FT1.”
    • Bu lisanslara sahip değilseniz, bir kapasite satın alabilir veya ücretsiz Fabric deneme kapasitesine kaydolabilirsiniz.
  2. Yönetici İzinleri:
    • Fabric Öğeleri Oluşturma: Fabric lakehouses ve diğer öğeleri oluşturmak için yöneticinizin bu izni vermesi gerekir. Ayarlar, Microsoft Fabric yönetim portalında yapılır.
    • Dataverse Güvenlik Rolü: Dataverse ortamında sistem yöneticisi rolüne sahip olmanız gerekir.
    • Power BI Yönetimi: Power BI çalışma alanının yöneticisi ve aynı coğrafi konumda bir kapasitenin yöneticisi olmalısınız.
  3. Premium Kapasite Erişimi:
    • Power BI’de çalışma alanına giderek Premium kapasite seçeneğini kontrol edin ve Trial veya Premium kapasitesinin seçili olduğundan emin olun.

Öncelikle Dynamics 365 ürünleri ile Fabric bağlantısı kurabilmek için Dynamics 365 ortamlarımızın hazır olması gerekiyor. Bu yazıda Power Platform Admin Center’da Dynamics 365 Finance and Operations ve Dataverse ortamının olduğu varsayılmıştır.

Bu ortam için https://make.powerapps.com/a giriyoruz. Aşağıdaki resimde görüldüğü gibi Tables menüsünden Analyze->Link to Microsoft Fabric’e tıklıyoruz.

Resim-1

Sonrasında açılan pencerenden hangi ortamın bağlantısını yapmak istiyorsak seçiyoruz. Buraya CMR linkini girmelisiniz. Sign in olmamız gerekecek.

Resim-2

Sonrasında Save Connection diyoruz.

Resim-3

Bir çalışma alanı seçiyoruz veya yeni oluşturabiliriz.

Resim-4

Tüm adımlar hatasız tamamlandığında Microsoft Fabric ile Dynamics 365 bağlantısı kurulmuş oluyor. Fabric sayfası otomatik açılacaktır. Tablolaron dolması ve senkronize olması biraz zaman alıyor. Bu aşamada tüm Dataverse tabloları otomatik bağlanıyor. FO tablolarını sonradan elle seçmemiz gerekiyor. Aşağıda bahsedeceğim.

Resim-5

Oluşan Fabric linki görmek için Azure Snapse Link menüsüne giriyoruz. Microsoft OneLake’e tıklıyoruz. Sanırım Fabric link ile Snapse link aynı yapıyı kullanıyorlar menu henüz değişmemiş ilerde iki faklı menu olabilir.

Resim-6

Açılan sayfada bağlantısı kurulmuş tabloların listesi geliyor.  Manage tables menüsünden tablo ekleme işlemlerini yapabiliyoruz.

Resim-7

Açılan sayfada hem Dataverse tablolarını hemde FO tablolarını görebilirsiniz. Tabloların bu listede görünebilmesi için bazı şartlar var en önemlisi tabloda Change tracking aktif edilmiş  olmalı. Buradan bağlantısını kurmak istediğiniz tabloları seçebilirsiniz. Ben CustTable ve CustGrup tablolarını seçtim.

Resim-8

Artık Fabric sayfasına gidebiliriz. Bir çalışma sayfası oluşturmuştum. İçine girdiğimde bir kaç faklı linkin olduğunu göreceksiniz. Lakehouse’a tıklayalım.

Resim-9

Lakehouse’a girdiğimde bağlantısını kurduğum tabloları görebiliyorum.

Resim-10

FO tablolarını listeden bulabilirsiniz. FO ortamı üzerinden veri değişiklikleri yaparak buraya yansımasını test edebilirsiniz. Şu anda saatte bir güncelleniyor.

Resim-11

Bu iki tabloyu kullaraka çok basit bir liste Power BI raporu yaptım.

Resim-12

Sonuç olarak, bu yazıda Microsoft Fabric ile Dynamics 365 entegrasyonunun nasıl sağlandığını anlatmaya çalıştım. Microsoft Fabric, Dynamics 365 ve Power Platform’un birleşimi, müşterilerde yoğun olarak kullanılacak güçlü bir yapı oluşturuyor. Bu entegrasyon, özellikle standart çözümler konusunda yaşadığımız bazı zorlukları ortadan kaldıracak gibi görünüyor. Ürün hala geliştirilmeye devam ediyor ve özellikle gelecekte yapay zeka ile olan iş birliği sayesinde projelerimizde büyük katkı sağlayacağını düşünüyorum.

Detaylar için buraya göz atabilirsiniz.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Fabric, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM, Power BI, Dataverse

PowerShell ile Power Platform Admin Center’a yeni bir Dynamics 365 Finance ortamı nasıl kurulur?

X++ geliştiricileri olarak büyük bir dönüşümün eşiğindeyiz. Geliştirme ortamımız Visual Studio olduğundan beri hayalını kurduğumuz kendi makinemizden kod yazabilme imkanı artık hazır sayılır. Ben bir kaç kez denedim gayatte iyi çalışıyor. Microsoft ve ekosistem bununla alaki bir çok içerik yayınladı bende elimden geldiğince kendi tecrübelerimi akatarmaya çalışacağım. Öncelikle bir ortama ihtiyacımız var ve bu ortam Power platform admin center üzerinden kurulmuş olmalı. LCS üzerinden kurulmuş ortamlara direk bağlanamıyoruz. Bu sebeple bu yazıda yeni bir FO ortamını Power platform admin center’a nasıl kuruyoruz anlatmaya çalıcağım.

Kurulumu yapabilmek için kullanıcınızın Dynamics 365 FO lisansına sahip olması gerekiyor. Benim buradaki lisansım iş ortağı lisansı olduğu için adı faklı ama kurulumu yapabiliyorum. Ayrıca kullanıcının Admin haklarına sahip olduğundan emin olun.

Resim-1

Şimdilik kurulum ara yüzden yapılamıyor. PowerShell ile kurulum yapıyoruz. Admin olarak açıp aşağıdaki kodları çalıştırmalısınız. DisplayName ortamınızın isminde ve linkinde  olacak bu sebeple uygun bir seçim yapmalısınız.

Add-PowerAppsAccount adımında kullanıcınız ile giriş yapmalısınız.

#Install the module

Install-Module -Name Microsoft.PowerApps.Administration.PowerShell

Write-Host “Creating a session against the Power Platform API”

Add-PowerAppsAccount -Endpoint prod

$jsonObject= @”

{

“PostProvisioningPackages”:

[

{

"applicationUniqueName": "msdyn_FinanceAndOperationsProvisioningAppAnchor",

"parameters": "DevToolsEnabled=true|DemoDataEnabled=true"

}

]

}

“@ | ConvertFrom-Json

New-AdminPowerAppEnvironment -DisplayName “DMRD365PowerShell” -EnvironmentSku Sandbox -Templates “D365_FinOps_Finance” -TemplateMetadata $jsonObject -LocationName “Europe” -ProvisionDatabase

Resim-2

Resim-3

Eğer her şey yolunda olursa Environment sekmesinden oluşturduğunuz  ortamı görebilirsiniz. Hem Dataverse ortamı hem de FO ortamı oluşturulacak. Linki kullanıp giriş yapabilirisiniz.

Resim-3

Dynamics 365 Finance ortamına girebilirsiniz.

Resim-4

Burada D365_FinOps_Finance kullanarak ortam oluşturduk. İhtiyaca göre aşağıdakilerden birinde kullanabiliriz ancak development açısından bir farkı yok.

Dynamics 365 Finance  Finance (preview)                               D365_FinOps_Finance

Dynamics 365 Supply Chain Management (preview)            D365_FinOps_SCM

Dynamics 365 Project Operations                                              D365_FinOps_ProjOps

Dynamics 365 Operations Application Partner Sandbox      D365_FinOps_ProjOps

Dynamics 365 Commerce                                                             D365_FinOps_Commerce

Bu yazıda Unified Admin Experience için gerekli olan ortam kurulumunun nasıl yapıldığını anlatmaya çalıştım. Sonraki yazılarımda bu ortama bağlanıp nasıl kod yazabiliyoruz anlatmaya çalışacağım.

Selamlar.

www.fatihdemirci.net

Kaynak: https://learn.microsoft.com/en-us/power-platform/admin/unified-experience/tutorial-deploy-new-environment-with-erp-template?tabs=PowerShell

TAGs: Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Power Automate, Power Apss, Dynamics 365 ERP, Dynamics 365 CRM

Cloud Hosted Golden Configuration Ortamından UAT Ortamına Veri Tabanı Nasıl Kopyalanır?

Bu yazıda Dynamics 365 Finance and Operations içinde Golden Configuration olarak kullanılan bir Cloud Hosted ortamın verileri test ve canlı sisteme nasıl kopyalanır anlatmaya çalışacağım.

Öncelikle veriyi taşımak istediğimiz ortama bağlanıyoruz. Backup Restore ile AxDB nin bir kopyasını oluşturuyoruz. Kopyalama işlemini bu DB üzerinden yapacağız. Bu aşamadan sonra  kopyalamak istemediğiniz veriler varsa buradan temizleyebilirsiniz.

Resim-1

Sonrasında forma aşağıdaki scripti çalıştırıyoruz. Bu script bizim için bazı ayarları yapıyor ve bazı istenmeyen konfigürasyon verilerini temizliyor.

update sysglobalconfiguration

set value = ‘SQLAZURE’

where name = ‘BACKENDDB’

update sysglobalconfiguration

set value = 1

where name = ‘TEMPTABLEINAXDB’

drop procedure if exists XU_DisableEnableNonClusteredIndexes

drop procedure if exists SP_ConfigureTablesForChangeTracking

drop procedure if exists SP_ConfigureTablesForChangeTracking_V2

drop schema [NT AUTHORITY\NETWORK SERVICE]

drop user [NT AUTHORITY\NETWORK SERVICE]

drop user axdbadmin

drop user axdeployuser

drop user axmrruntimeuser

drop user axretaildatasyncuser

drop user axretailruntimeuser

drop user axdeployextuser

–Tidy up the batch server config from the previous environment

DELETE FROM SYSSERVERCONFIG

–Tidy up server sessions from the previous environment

DELETE FROM SYSSERVERSESSIONS

–Tidy up printers from the previous environment

DELETE FROM SYSCORPNETPRINTERS

–Tidy up client sessions from the previous environment

DELETE FROM SYSCLIENTSESSIONS

–Tidy up batch sessions from the previous environment

DELETE FROM BATCHSERVERCONFIG

–Tidy up batch server to batch group relation table

DELETE FROM BATCHSERVERGROUP

– Clear encrypted hardware profile merchant properties

update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null

Eğer kurulu değilse .NET Core for Windows Get sqlpackage .NET Core for Windows.  paketini kuruyoruz.

Command Prompt’u admin olarak açıp aşağıdaki scripti çalıştırıyoruz.  SqlPackage.exe sizde faklı klasörde olabilir biraz aramanız gerekebilir.

cd C:\Program Files\Microsoft SQL Server\160\DAC\bin

SqlPackage.exe /a:export /ssn:localhost /sdn:AXDB_CopyForExport /tf:D:\Exportedbacpac\AXDB_CopyForExport.bacpac /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false /SourceTrustServerCertificate:True

Resim-2

Export tamamlandıktan sonra Asset library’e yüklüyoruz.

Resim-3

UAT ortamına gidip Maintain menüsünden Move Database deyip açılan ekrandan Import database’i seçiyoruz.

Resim-4

Yüklediğimiz dosyayı seçip işlemi başlatıyoruz.

Resim-5

Bir kaç saat içinde işlemler tamamlanacak. History’den işlemin başarılı tamamlandığını görebilirsiniz.

Resim-6

Böylelikle Golden ortamından UAT ortamına veriyi taşımış olduk. Bu aşamadan sonra eğer istersek direk UAT den canlı ortama veriyi kopyalayabiliriz. Bu zaten ara yüzden basit bir işlemle yapılabiliyor.

Selamlar.

Kaynak: https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/database/dbmovement-scenario-goldenconfig

www.fatihdemirci.net

TAGs: Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Power Automate, Power Apss, Dynamics 365 ERP, Dynamics 365 CRM

Microsoft Dynamics 365 F&O: Uzak Masaüstü Bağlantısı Sırasında Çıkan “As a security precaution, the user account has been locked because there were too many logon attempts or password change attempts..” hatası nasıl giderilir?

Bu yazıda Dynamics 365 F&O için oluşturulan Cloud-hosted environments’lara uzak masaüstü ile bağlanırken karşımıza sıklıkla çıkan “As a security precaution, the user account has been locked because there were too many logon attempts or password change attempts. Wait a while before trying again, or contact your system administrator or technical support” hatasının sebebini ve çözüm yollarını anlatacağım.

Hatadan da anlaşılacağı gibi çok fazla hatalı giriş denemesi sebebiyle kullanıcımız kilitlenmiş durumda. Bu bizim güvenlik ayarlarınızla ve bir çok faklı etkenle ilişkili bir durum. Her zaman bizim yanlış şifre ile giriş yapmaya çalışmanızdan kaynaklanmıyor olabiliyor. Uzak masaüstü için kullanılan araçlar sürekli bağlantının açık olmasını sağlamak için özellikle biz ekran başında değilken bağlantı denemesi yapması. Ayrıca standart masaüstü uygulaması ile bağlandıktan sonra bilgisayarı uykuya almak veya ekranı kilitlemek suretiyle bağlantıyı kapatmadan yapılan bu işlemler buna sebep olabiliyor.

Resim-1

Çözüm olarak makineyi yeniden başlatmayı ve bir süre bekleyip giriş yapmayı deneyebilirsiniz. Ancak bunlar çözüm olmazsa dev ortamları için otomatik oluşan ikinci bir kullanıcı mevcut onun ile giriş yapabilirsiniz. Ancak Demo tipinde kurduğunuz ortamlarda tek bir kullanıcı oluşuyor. Bu yüzden ikinci bir kullanıcıyı makinede oluşturmakta faydalı olabilir. Bunlar yoksa kullanıcı şifresini sıfırlamak bir çözüm olabilir.

Resim-2

Azure portal e giriş yapıp ilgili makineye geliyoruz. Connect sekmesinden More Options -> Reset password or keys’e tıklatıyoruz.

Resim-3

Açılan sayfadan yeni şifre girişini yapıp güncelle diyoruz.

Resim-4

Böylelikle kullanıcı şifresini sıfırlamış olduk artık uzak masaüstü ile bağlantıyı deneyebiliriz.

Bu yöntemle şifre değiştirdiğinizde versiyon güncellemelerinde sorun çıkabilir. Şifreyi eski haline getirmek buna çözüm olabilir.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Power Automate, Power Apss, Dynamics 365 ERP, Dynamics 365 CRM

Dynamics 365 Finance and Operations Cross-company Data Sharing.

Cross-company data sharing kavramı, ERP içindeki şirketler arasında şirket özel ana, referans ve kurulum verilerini paylaşmanızı sağlar.

İki veri paylaşımı kavramı mevcuttur:

Duplicate record sharing (DRS), bir politikada herhangi bir şirket için kayıtların oluşturulması, güncellenmesi veya silinmesinin, politikadaki tüm şirketlere kopyalanması/çoğaltılması kavramıdır. Alanların güncellemeleri, politikada paylaşılmak üzere seçilmişse çoğaltılır. DRS, ilk olarak sunulan paylaşım türüydü.

Single record sharing (SRS), bir ana şirkete ait tek bir fiziksel kaydın sanal olarak tüm alt şirketler arasında paylaşıldığı bir kavramdır. Herhangi bir şirkette oluşturma, güncelleme veya silme, tüm şirketler arasında kullanılan tek ortak kayıtta işlem yapar. Ana şirket paylaşımı şu anda ön izlemede ama kısa sürede buda aktif edilecektir. Biraz eski sanal şirket mantığı gibi düşünebilirsiniz.

Basit bir kurulumla DRS için bir örnek yapalım. Cross-company Data Sharing özelliği açık olmayabilir. Feature management kullanarak aktif edebilirsiniz. Sonrasında aşağıdaki formu açalım. Yeni bir kayıt oluşturup Tablo olarak CustGroup ekleyelim. Tablo listesi burada mevcut. Veri paylaşma istediğimiz iki şirketi seçtim.

Resim-1

USMF te veri mevcut.

Resim-2

SIR şirketinde hiç veri yok.

Resim-3

Kaydettikten sonra Enable edip senkronizasyonu başlatıyoruz.

Resim-4

Veri kopyalama devam ediyor.

Resim-5

İşlem tamamlandıktan sonra SIR şirketini yenilediğinizde verilerin oluştuğunu göreceksiniz. Resim1 de görüldüğü gibi PeymTermId seçmediğimiz için verileri kopyalanmadı. Bu şekilde istediğimiz alanı seçebiliriz. Tabi Ana tablolu bir alansa onun tablosunundu paylaşılması gerekecektir.

Resim-6

Ana veri paylaşımı çok sık karşımıza çıkan bir konu benzer kodları çok defa yazmak zorunda kalmışımdır. Bu özellik benzer ihtiyaçları sistem içinden çözmek için çok iyi olmuş. Hala geliştirilmeye devam ediyor. Tam olgunlaştığında özellikle danışmanlar tarafından yoğun kullanılacak bir fonksiyon olacaktır.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, DefaultAccount, LedgerDimension, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Segmented Entry, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

Transforming X++ into a General Web-Based Application Development Platform.

Microsoft Dynamics 365 F&SCM/FO/AX/Axapta was originally developed in collaboration between IBM and the Danish company Damgaard Data, with the first version released as IBM Axapta in March 1998. Axapta included its own development system, a combination of MorphX and the X++ programming language. MorphX and X++ had went through a significant evolution after Microsoft acquired the product in 2002. Initially, it was only designed to support enterprise resource planning processes, but today, with the support of Microsoft’s vision and technologies, X++ has become a powerful web development platform, but is still only available within Dynamics 365 F&SCM.

Along with its rapid development capabilities, strong database integration, high performance, object-oriented programming and the ability to efficiently manage business rules, X++ is able to provide fast and excellent solutions to the complexity of the business world. Currently, thousands of additional solutions developed with X++ are successfully used in ERP. However, the dependency of these solutions on Dynamics 365 F&SCM infrastructure limits their potential customer base.

In this article, we will discover the benefits of X++ becoming a mainstream web development platform and the opportunities this transformation can create for business, Microsoft and the X++ ecosystem. With detailed analysis and examples, we will evaluate how this transformation can be realized, the implications and challenges it may bring. Finally, we will try to create a platform for the entire ecosystem to discuss this transformation.

Why should this transformation be essential, and what benefits will it bring when completed?

  • There are currently thousands of modules and functions are written by X++. While these are currently dependent on Dynamics 365 F&SCM, many of them can be productized and sold independently. Developing these products with a different language that lacks of an  infrastructure similar to X++ is both costly and challenging. Leveraging these existing products through AppSource or independent sales could create numerous opportunities for Dynamics 365.
  • X++ allows for the rapid and easy development of many corporate web products, providing opportunities for both the X++ and Dynamics 365 ecosystems. Additionally, product and solution diversity will will support to growing Dynamics 365′s competitive position. Producing products with X++ is faster and more reliable than other languages.
  • This transformation will expand X++ ecosystem. The interaction of different resources working with X++ will allow for solutions to emerge in unexpected areas. Moreover, the growth of this ecosystem will positively impact the growth of Dynamics 365 F&SCM, enhancing its visibility.
  • Making X++ a new and easily accessible language for training resources will increase its appeal, especially for individuals at the beginning of their careers. Additionally, there will be no need for virtual machines or lengthy installations for training, making X++ development easily experiencable for many.
  • Open-source logic can be applied to X++ projects, resulting in the development of more powerful products. Furthermore, aligning with Microsoft‘s vision, this transformation will accelerate the development of X++.
  • The existing X++ ecosystem simplifies the widespread adoption and training of this new structure. Numerous X++ trainers and creators are already exists and more can be quickly added.
  • Along with these new products and ecosystem, cross-sell and co-sell opportunities will be increased.
  • The current structure of the X++ development environment is already suitable for this transformation. I believe that this transformation can be accomplished with a relatively uncomplicated project. With the contribution of volunteers from the X++ ecosystem, an initial version for training purposes could be released. In this version, the ability to create new objects would be sufficient.
  • Given that products developed with X++ can be easily integrated into the Microsoft ecosystem and provides cost advantages, they will be preferable.
  • X++ can be a language and platform for education, particularly for foundational software training in schools, especially in Object-Oriented Programming and Database Management courses. To support this, educational content can be prepared.
  • X++ language and development framework are enable the easy, fast, and reliable development of products. Particularly, the simplicity in database transactions, the structure of EDT and Enum, the security architecture, and the organized nature of Events provide for well-organized code and the creation of straightforward solutions for complex needs. Applications hosting large volumes of data can be developed easily.
  • It’s noteworthy that within the current X++ environment, developers already possess the capability to write code in C# and make use of .NET libraries seamlessly. This inherent flexibility allows for a powerful synergy between the robust features of X++ and the extensive functionalities offered by C# and the broader .NET ecosystem. Leveraging this advantage, the transformation of X++ into a comprehensive web-based development platform gains an extra layer of versatility. Developers, familiar with C# syntax and accustomed to working with .NET libraries, can seamlessly transition their skills to enhance X++ applications. This not only streamlines the development process but also extends the potential areas of application, making X++ an even more adaptable and developer-friendly platform.
  • While Microsoft currently offers Power Pages for citizen developers as a web development tool, there is no such tool for core developers. X++ can quickly fill this gap. This transformation will not only avoid competition with Microsoft‘s other products,it will also increase the usage of Power Platform and Dynamics 365. On the Azure side, it is anticipated to have an even greater impact.
  • Especially in corporate web solutions where data processing is crucial and complex code is required, X++ can be quickly and easily put into operation, making it a highly preferred tool.

How can X++ be transformed into a general web development platform?

  • The most important step towards X++‘s goal of becoming a general software development language starts with having a structure that can be easily developed locally like C#. At this point, the current state is very close to this goal, but the size of the system complicates this transformation. A language that gets rid of this complexity can realize this evolution much more smoothly.
  • X++ should be come with a framework that simplifies development, not just the language itself. When I refer to X++, I mean the development structure that comes with the framework. This structure is the main goal we want to achieve. Thus, while there will be an Application Object Tree (AOT), almost no standard objects will be present initially. When developing a new application, we should be able to include different modules in our project if we wish.

Structures that can be optionally added include:

  1. User management
  2. Standard EDTs and Enums
  3. Security infrastructure
  4. Workflow management
  5. Address management
  6. Company structure
  7. Data Management Framework (DMF)
  8. SQL Server Reporting Services (SSRS)
  9. Office integration
  10. Batch jobs
  11. Web service structure
  12. Power platform integration
  13. Power BI
  14. Model package management
  • Servers for a product developed with X++ can be made ready on Azure. These offers make advantage of Azure consumption.. However, this should not be a requirement and alternative options should be available.
  • It should be compatible with different versions of SQL Server. It can be done in the future to enhance its ability to work with various databases, expanding integration opportunities with different databases.
  • The initial version can start in a simpler form, leaving out structures that could complicate matters initially, such as Map, Extension, Table Extension, etc.
  • The standard Dynamics 365 F&SCM structure can remain the same. This should be released as a new product.

In Conclusion:

Throughout this article, we have examined many advantages of transforming X++ into a general web development platform. X++ is known as a language that stands out with its robust database management, rapid development capabilities, object-oriented programming features, and effective business rule management. However, using these powerful features in the context of general web development will open up access to a wider user base and offer potential solutions in various projects.

The evolution of X++ into a general web development platform not only creates new opportunities but also allows for the modernization of existing projects. Developers can produce more efficient, faster, and powerful projects with this transformation. This feature will gives companies a competitive advantage and allowing the language to create a richer ecosystem with a broader developer base.

However, achieving these goals requires not only technical challenges but also community support, educational resources and developer collaboration. Get through these challenges and leveraging the potential of X++ can provide benefits to developers and to the business world.

In conclusion, the transformation of X++ into a general web development platform allows for a wider perspective on the language. This transformation will carry out the foundations of the language into general web applications, providing more effective and competitive solutions in future projects.The X++ community, the developer team, and Microsoft can contribute together to ensure the success of this journey. I can’t wait to see what the future holds!

Happy Daxing!

Fatih Demirci

2024

X++, Genel Bir Web Geliştirme Teknolojisi Haline Getirilmelidir!

Microsoft Dynamics 365 F&SCM/FO/AX/Axapta, orijinal olarak IBM ve Danimarka firması Damgaard Data işbirliği ile geliştirilmiş ve ilk versiyonu IBM Axapta olarak Mart 1998′de piyasaya sürülmüştü. Axapta kendi geliştirme sistemi içeriyordu MorphX ve X++ programlama dilinin bir kombinasyonu. MorphX ve X++ 2002’de Microsoft’un ürünü satınalmasından sonra önemli bir evrim geçirdi. Başlangıçta, sadece kurumsal kaynak planlama süreçlerini desteklemek amacıyla tasarlanmıştı ancak bugün Microsoft’un vizyonu ve teknolojilerinin desteğiyle birlikte, X++ güçlü bir web geliştirme platformu haline geldi ama hala sadece Dynamics 365 ERP içinde kullanılabiliyor.

X++, hızlı geliştirme yetenekleri, güçlü veri tabanı entegrasyonu, yüksek performans, nesne yönelimli programlama ve iş kurallarını etkili bir şekilde yönetme yetenekleri ile iş dünyasının karmaşıklığına hızlı ve mükemmel çözümler sunabiliyor. Şu an için X++ ile geliştirilmiş binlerce ek çözüm ERP içinde başarıyla kullanılıyor. Ancak bu çözümlerin Dynamics 365 ERP altyapısına bağımlı olması potansiyel müşteri kitlesini sınırlıyor.

Bu makalede X++‘ın genel bir web geliştirme platformu haline gelmesinin faydalarını ve bu dönüşümün iş dünyası, Microsoft ve X++ ekosistemi için yaratabileceği fırsatları keşfedeceğiz. Detaylı analizler ve örneklerle bu dönüşümün nasıl gerçekleştirilebileceğini, beraberinde getireceği sonuçları, karşılaşabileceği zorlukları değerlendireceğiz. Nihayetinde, bu dönüşümün tüm ekosistem tarafından tartışılmasını sağlayacak bir zemin oluşturmaya çalışacağız.

İyi okumalar dilerim!

Neden bu dönüşüm yapılmalı ve yapıldığında ne gibi faydaları olacak?

  • X++ ile yazılmış binlerce modül ve fonksiyon mevcut. Şu anda bunlar Dynamics 365 ERP’ye bağımlı durumda. Birçoğu ürünleştirilip tek başına satılabilir. X++ benzeri altyapısı olmayan farklı bir dil ile bu ürünleri geliştirmek çok maliyetli ve zor. Oysa ki hazır olan bu ürünler, AppSource aracılığıyla veya bağımsız bir şekilde kolayca satılabilir. Bu sayede Dynamics 365 için de birçok fırsatın ortaya çıkması mümkün olacaktır.
  • Birçok kurumsal web ürünü, X++ sayesinde hızlı ve kolay bir şekilde geliştirilebilir. Bu durum, hem X++ hem de Dynamics 365 ekosistemine birçok fırsat sunacaktır. Ayrıca, ürün ve çözüm çeşitliliği, Dynamics 365‘in rekabet içinde daha güçlü bir konuma gelmesine katkı sağlayacaktır. Diğer dillerle kıyaslandığında X++ ile ürün ortaya çıkarmak çok daha hızlı ve güvenilir olacaktır.
  • Bu dönüşüm, X++ ekosistemini genişletecektir. X++ ile çalışan farklı kaynakların etkileşimi, beklenmeyen alanlarda çözümlerin ortaya çıkmasına olanak tanıyacaktır. Ayrıca, bu büyüyen ekosistem sayesinde Dynamics 365 ERP‘nin büyümesine de olumlu etkisi olacak, bilinirliliğini arttıracaktır.
  • Bu dönüşüm, X++ için yeni kaynak eğitimini çok kolay ve çekici hale getirecektir. Kariyerinin başında olan kişiler için tercih edilebilir bir dil olma özelliğini artıracaktır. Ayrıca, eğitim vermek için sanal makineler veya uzun kurulumlara ihtiyaç olmayacak; bu sayede birçok kişi X++ ile geliştirmeyi kolayca deneyimleyebilecektir.
  • Açık kaynak kod mantığı ile projeler geliştirilebilir. Bu sayede çok daha güçlü ürünlerin ortaya çıkması sağlanabilir. Ayrıca, Microsoft vizyonuna uygun olarak X++‘ın gelişimini de hızlandıracaktır.
  • Hazır bir X++ ekosistemi olduğu için, bu yeni yapının yaygınlaştırılması ve eğitimi çok kolayca yapılabilir. Halihazırda birçok X++ eğitmeni ve içerik üreticisi mevcut; bunlara hızlıca yenileri eklenecektir.
  • Bu yeni ürünler ve ekosistem sayesinde cross-sell ve co-sell imkanları artacaktır.
  • X++ geliştirme ortamının son yapısı zaten bu dönüşüm için çok uygun. Çok karmaşık olmayan bir proje ile bu dönüşümün yapılabileceğine inanıyorum. X++ ekosisteminden gönüllülerin de katkısıyla öncelikle eğitim amaçlı bir sürüm çıkarılabilir. Bu sürümde sadece yeni nesne oluşturma imkanı olması yeterli olacaktır.
  • X++ ile üretilen bu ürünlerin Microsoft ekosistemine kolayca entegre edilebilecek olması ve maliyet avantajları sunması, tercih edilebilir olmasını sağlayacaktır.
  • X++ bir eğitim dili ve platformu haline gelebilir. Okullarda temel yazılım eğitimlerinde kullanılabilir, özellikle Nesne Yönelimli Programlama ve Veri Tabanı Yönetimi derslerinde temel dil olarak öğretilebilir. Bunu desteklemek için eğitim içerikleri hazırlanabilir.
  • X++ dili ve geliştirme frameworku çok kolay, hızlı ve güvenilir ürün geliştirmeye olanak sağlıyor. Özellikle veri tabanı ile olan işlemlerdeki kolaylık, EDT ve Enum yapısı, güvenlik yapısı, ve Event’lerin düzenlenmiş olması, kodların çok daha iyi organize olmasına ve karmaşık ihtiyaçlar için bile yalın çözümlerin üretilebilmesini sağlamaktadır. Büyük verileri barındıracak uygulamalar kolayca geliştirilebilecektir.
  • Microsoft hali hazırda Power Pages ile citizen developerlar için bir web geliştirme aracı sunuyor ancak core developerlar için böyle bir araç yok bu eksikliği X++ çok kolay ve hızlıca kapatabilir.
  • Bu dönüşüm Microsoft’un diğer ürünleri ile rekabet etmeyecek hatta Power Platfrom ve Dynamics 365 kullanımını arttıracaktır. Azure tarafında ise çok daha büyük bir etkisi olması öngörülmüştür.
  • X++ ile özellikle veri işlemenin önemli olduğu, karmaşık kod ihtiyacı olan kurumsal web çözümleri çok kolay ve hızlıca devreye alınabilir. Bu da çok tercih edilen bir araç olmasını sağlayacaktır.

X++, genel web geliştirme platformu haline nasıl getirilebilir?

  • X++‘ın genel bir yazılım geliştirme dili olma hedefine yönelik en önemli adım, C# gibi yerelde kolayca geliştirilebilen bir yapıya sahip olması ile başlar. Bu noktada, mevcut durum bu hedefe oldukça yaklaşmış durumdadır ancak sistem büyüklüğü bu dönüşümü karmaşıklaştırmaktadır. Bu karmaşıklıktan sıyrılan bir dil, bu evrimi çok daha sorunsuz bir şekilde gerçekleştirebilir.
  • X++ tek başına değil geliştirmeyi kolaylaştıran framework ile birlikte gelmelidir. Bu yüzden ben X++ derken sadece dili değil framework ile birlikte olan geliştirme yapısını kastediyorum. Bu yapı zaten asıl ulaşmak istediğimiz hedef. Dolayısıyla AOT olacak ama nerdeyse standart hiç bir nesne başlangıçta olmayacak. Standart hiç bir nesnenin kullanılmadığı yeni bir geliştirme yaptığımızda neler yapıyorsak aynısını yapabileceğimiz bir yapı hayal ediyorum. Yeni bir uygulamaya başlarken istersek faklı modulleri projemize dahil edebilmeliyiz.

İsteğe bağlı olarak eklenebilecek yapılar şunlar olabilir:

  1. Standart EDT ve Enumlar.
  2. Güvenlik altyapısı
  3. Kullanıcı yönetimi
  4. İş akışı yönetimi
  5. Adres yönetimi
  6. Şirket yapısı
  7. DMF
  8. SSRS (SQL Server Reporting Services)
  9. Ofis entegrasyonu
  10. Toplu işler
  11. Web servis yapısı
  12. Power platform entegrasyonu
  13. Power BI
  14. Model paket yönetimi
  • X++ ile geliştirilen bir ürün için sunucular Azure üzerinde hazır hale getirilebilir. Bu, Azure tüketimini sağlama avantajı sunar. Ancak, bu bir zorunluluk olmamalı ve farklı alternatifler de kullanılabilir olmalıdır.
  • SQL Server‘ın farklı versiyonları ile uyumlu olmalıdır. Gelecekte çeşitli veri tabanlarıyla çalışabilme yeteneğini geliştirmek adına çalışmalar yapılabilir. Bu çeşitli veri tabanlarıyla entegrasyon imkanlarını genişletebilir bu yeni olanakları beraberinde getirebilir.
  • İlk versiyon, daha basit bir formda başlayabilir. Karmaşıklaştırabilecek yapılar başlangıçta dışarıda bırakılabilir. Örneğin Map, Extension, Table Extension vs.

Sonuç;

Bu yazı boyunca, X++ dilinin genel bir web geliştirme platformu haline getirilmesinin pek çok avantajını inceledik. X++ güçlü veri tabanı yönetimi, hızlı geliştirme yetenekleri, nesne yönelimli programlama özellikleri ve iş kurallarını etkili bir şekilde yönetme kabiliyetleri ile öne çıkan bir dil olarak bilinir. Ancak bu güçlü özelliklerin genel web geliştirme bağlamında kullanılması, daha geniş bir kullanıcı kitlesine erişme ve çeşitli projelerde etkili çözümler sunma potansiyelini ortaya çıkaracaktır.

X++‘ın genel web geliştirme platformu olarak evrimleşmesi, yeni fırsatlar yaratmanın yanı sıra mevcut projeleri de modernleştirme şansı sunar. Geliştiriciler, bu dönüşümle birlikte daha verimli, hızlı ve güçlü projeler üretebilirler. Bu, şirketlere rekabet avantajı kazandırırken, geniş bir geliştirici kitlesiyle dilin daha zengin bir ekosistem oluşturmasına olanak tanır.

Ancak, bu hedeflere ulaşmak için teknik zorlukların yanı sıra topluluk desteğine, eğitim kaynaklarına ve geliştirici işbirliğine ihtiyaç vardır. X++ genel web geliştirme platformu haline getirilirken, bu zorlukları aşmak ve dilin potansiyelini tam anlamıyla değerlendirmek, sadece geliştiricilere değil aynı zamanda iş dünyasına da büyük avantajlar sağlayabilir.

Sonuç olarak, X++‘ın genel web geliştirme platformu haline getirilmesi, dilin daha geniş bir perspektiften değerlendirilmesini sağlar. Bu dönüşüm, dilin güçlü temellerini genel web uygulamalarına taşırken, gelecekteki projelerde daha etkili ve rekabetçi çözümler sunma potansiyelini artırır. X++ topluluğu, geliştirici ekibi ve Microsoft bu yolculukta birlikte çalışarak dilin başarıya ulaşmasına katkıda bulunabilir. Gelecekteki gelişmeleri sabırsızlıkla bekliyorum.

İyi kodlamalar!

SysDa Sınıflarını Kullanarak Join Nasıl Yazılır?

Bu yazıda Dynamics 365 Finance and Operations içinde sorgu yazmanın yeni bir yöntemi olan SysDa API ‘ından bahsetmeye devam edeceğim. Bir önceki yazımda Order By örneği paylaşmıştım. Bu örnekte Join yazımını inceleyeceğim.

Gelelim örneğimize,

internal final class DmrFDJobSysDaSelect6

{

public static void main(Args _args)

{

InventTable inventTable;

InventTrans inventTrans;

while select ItemId , Qty from inventTrans

where inventTrans.Qty > 30000000

join NameAlias from inventTable

where inventTrans.ItemId == inventTable.ItemId

{

info(strFmt("%1 %2 %3" , inventTrans.ItemId , inventTable.NameAlias , inventTrans.Qty));

}

var sysDaQInventTrans = new SysDaQueryObject(InventTrans);

var sysDaQInventTable = new SysDaQueryObject(InventTable);

sysDaQInventTrans.joinClause(SysDaJoinKind::InnerJoin , sysDaQInventTable);

var flInventTrans = sysDaQInventTrans.projection()

.add(fieldStr(InventTrans, ItemId ))

.add(fieldStr(InventTrans, qty));

var flInventTable = sysDaQInventTable.projection()

.add(fieldStr(inventTable, NameAlias ));

sysDaQInventTable.WhereClause(new SysDaEqualsExpression(

new SysDaFieldExpression(inventTrans, fieldStr(InventTrans, itemId)),

new SysDaFieldExpression(inventTable, fieldStr(inventTable, itemId))));

sysDaQInventTrans.WhereClause(new SysDaGreaterThanExpression(

new SysDaFieldExpression(inventTrans, fieldStr(InventTrans, qty)),

new SysDaValueExpression(30000000)));

var sysDaSO = new SysDaSearchObject(sysDaQInventTrans);

var sysDaSS = new SysDaSearchStatement();

while (sysDaSS.findNext(sysDaSO))

{

info(strFmt("%1 %2 %3" , inventTrans.ItemId , inventTable.NameAlias , inventTrans.Qty));

}

}

}

Selamlar.

www.fatihdemirci.net

TAGs: SysDa, Microsoft Dynamics 365, MsDyn365FO, MsDyn365, X++, Azure DevOps,

SysDa Sınıflarını Kullanarak Order By ve Group By Nasıl Yazılır?

Bu yazıda Dynamics 365 Finance and Operations içinde sorgu yazmanın yeni bir yöntemi olan SysDa API ‘ından bahsetmeye devam edeceğim. Bir önceki yazımda select örneği paylaşmıştım. Bu örnekte Order By ve Group By yazımını inceleyeceğim.

Gelelim örneğimize, Aşağıdaki gibi bir Order By ifadesimi SysDa ile nasıl yapacağımız bakalım.

internal final class DmrFDJobSysDaSelect3

{

public static void main(Args _args)

{

InventTrans inventTrans;

while select ItemId , Qty from inventTrans

order by ItemId desc

where inventTrans.Qty > 30000000

{

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

}

var sysDaQ = new SysDaQueryObject(InventTrans);

var s = sysDaQ.projection()

.add(fieldStr(InventTrans, ItemId ))

.add(fieldStr(InventTrans, qty));

sysDaQ.orderByClause().addDescending(fieldStr(InventTrans, itemId));

sysDaQ.WhereClause(new SysDaGreaterThanExpression(

new SysDaFieldExpression(inventTrans, fieldStr(InventTrans, qty)),

new SysDaValueExpression(30000000)));

var sysDaSO = new SysDaSearchObject(sysDaQ);

var sysDaSS = new SysDaSearchStatement();

while (sysDaSS.findNext(sysDaSO))

{

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

}

}

}

Şimdi Group by yazımına bakalım:

internal final class DmrFDJobSysDaSelect3

{

public static void main(Args _args)

{

InventTrans inventTrans;

while select ItemId , sum(qty) from inventTrans

group by ItemId

where inventTrans.Qty > 20000000

{

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

}

var sysDaQ = new SysDaQueryObject(InventTrans);

var s = sysDaQ.projection()

.add(fieldStr(InventTrans, ItemId ))

.addSum(fieldStr(InventTrans, qty));

sysDaQ.groupByClause().add(fieldStr(InventTrans, ItemId));

sysDaQ.WhereClause(new SysDaGreaterThanExpression(

new SysDaFieldExpression(inventTrans, fieldStr(InventTrans, qty)),

new SysDaValueExpression(20000000)));

var sysDaSO = new SysDaSearchObject(sysDaQ);

var sysDaSS = new SysDaSearchStatement();

while (sysDaSS.findNext(sysDaSO))

{

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

}

}

}

Selamlar.

www.fatihdemirci.net

TAGs: SysDa, Microsoft Dynamics 365, MsDyn365FO, MsDyn365, X++, Azure DevOps,

SysDa Sınıflarını Kullanarak Select Nasıl Yazılır?

Bu yazıda Dynamics 365 Finance and Operations içinde sorgu yazmanın yeni bir yöntemi olan SysDa API ‘ından bahsetmeye devam edeceğim. Bir önceki yazımda While select örneği paylaşmıştım. Bu örnekte direk select yazımını inceleyeceğim.

Gelelim örneğimize, Aşağıdaki gibi bir select ifadesimi SysDa ile nasıl yapacağımız bakalım.

select ItemId , Qty from inventTrans

where inventTrans.Qty > 30000000;

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

Şimdi SysDa ile yazalım:

var sysDaQ = new SysDaQueryObject(InventTrans);

var s = sysDaQ.projection()

.add(fieldStr(InventTrans, ItemId ))

.add(fieldStr(InventTrans, qty));

sysDaQ.WhereClause(new SysDaGreaterThanExpression(

new SysDaFieldExpression(inventTrans, fieldStr(InventTrans, qty)),

new SysDaValueExpression(30000000)));

var sysDaSO = new SysDaFindObject(sysDaQ);

new SysDaFindStatement().execute(sysDaSO);

info(strFmt("%1 %2" , inventTrans.ItemId , inventTrans.Qty));

Bu yazıda SysDa API’ına giriş yaptım. Daha ileri seviye örneklerle anlatmaya devam edeceğim.

Selamlar.

www.fatihdemirci.net

TAGs: SysDa, Microsoft Dynamics 365, MsDyn365FO, MsDyn365,  X++, Azure DevOps,

Page 1 of 4012345102030...Last »