just coding...

Automating CRM Test Cases

The first level of CRM automated test cases consists of the database and schema unit tests that validate the general structure and data of a deployed CRM solution. 

The second level of CRM tests should include more extensive API tests to check the consistency of CRM query and update operations and test the functionalities of deployed plug-ins and workflows. Negative and positive test scenarios should also be included to test the error and exception branches of the application. 

The third level of automated CRM tests consists of the functional tests. Functional testing of CRM solutions are similar to any ASP.NET or other web applications testing methods, leveraging the web testing framework of Visual Studio environment. 

Two possible automation techniques are available using Visual Studio for automated UI tests: Captured web tests and Coded UI tests. 

The first scenario is recommended to quickly capture and create automated test cases for a specific CRM form or functionality. The captured test scenario will contain all web requests and responses executed by the client browser. Visual Studio test framework provides a lot of tools to pre- and post- process the tests; however, to be able to rerun a captured Web Test, a lot of manual work is still required (for example, extracting CRM view IDs, entity IDs, parameterizing data entries, and randomizing search clauses and data). The captured and parameterized Web Tests can usually support only a specific functional version of a CRM form. After changing the flow of the tested functionality, a recapture of the test is usually be required. 

Creating coded UI tests usually requires more effort for developers but can be more general, making it possible to support even larger structural changes on the tested forms. Coded UI tests can be created either by converting a captured Web Test, or by reusing the existing samples and common components provided by the CRM 2011 Performance Toolkit. 

Using automated tests and Visual Studio for tracking requirements and connecting work-items to check-ins provides the ability for bugs and resolution check-ins to be traced back to the specific requirement and test scenario. In fact, with the Visual Studio test framework, it is possible to track code changes and their impacts through to the application and test suites, including which test cases are required to be re-run. 

Note: To have this experience across all aspects of an enterprise Dynamics CRM delivery (including CRM customizations) requires an offline build process using the unpacked customization source tree. 

Azure Export Service ile SQL Server arasinda yasanan DB Link hatasinin cozumu

Data Export Servisi, Dynamics 365 verilerini bir Microsoft Azure aboneliğinde Microsoft Azure SQL Veritabanına kopyalayabilen  bir eklenti hizmetidir. Desteklenen hedef yerler Microsoft Azure SQL Veritabanı ve Microsoft Azure sanal makinelerinde Microsoft Azure SQL Server'dır. Data Export, başlangıçta tüm Dynamics 365 şemasını ve verilerini akıllı bir şekilde senkronize eder ve ardından Microsoft Dynamics 365 (çevrimiçi) sistemindeki değişiklikler (delta değişiklikleri) gibi sürekli olarak senkronize olur.

Bu servis hizmetinden yararlanabilmeniz icin asagidaki scripti Azure SQL Server ya da Sanal Makinadaki SQL Server bilgisi ile birlikte Dynamics 365 Hizmetinisin bilgilerini de icercek sekilde doldurup calistirmaxiz gerekmekte.

Data Export Servisinin nasıl yapilandiracagi ile ilgili bilgiye su adresten ulaşabilirsiniz : 

# -------------------------------------------------------------------------------- #

#  Provide the value for the following parameters before executing the script

$subscriptionId #burasi belirtilmeli#

$keyvaultName #burasi belirtilmeli#'

 $secretName #burasi belirtilmeli#'

 $resourceGroupName #burasi belirtilmeli#'

$location #burasi belirtilmeli#'

$connectionString #burasi belirtilmeli#'

$organizationIdList #burasi belirtilmeli#'

$tenantId #burasi belirtilmeli#'


# -------------------------------------------------------------------------------- #


# Login to Azure account, select subscription and tenant Id


Set-AzureRmContext -TenantId $tenantId -SubscriptionId$subscriptionId


# Create new resource group if not exists.

$rgAvail Get-AzureRmResourceGroup -Name $resourceGroupName-Location $location -ErrorAction SilentlyContinue


    New-AzureRmResourceGroup -Name $resourceGroupName-Location $location



# Create new key vault if not exists.

$kvAvail Get-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName$resourceGroupName -ErrorAction SilentlyContinue


    New-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName$resourceGroupName -Location $location

    # Wait few seconds for DNS entry to propagate

    Start-Sleep -Seconds15



# Create tags to store allowed set of Organizations.

$secretTags =@{}

foreach($orgId in $organizationIdList.Split(',')) {




# Add or update a secret to key vault.

$secretVaule ConvertTo-SecureString $connectionString -AsPlainText -Force

$secret Set-AzureKeyVaultSecret-VaultName $keyvaultName -Name $secretName -SecretValue$secretVaule -Tags $secretTags


# Authorize application to access key vault.

$servicePrincipal 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'

Set-AzureRmKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName$servicePrincipal -PermissionsToSecrets get


# Display secret url.

Write-Host "Connection key vault URL is "$$secret.Version)""  

Benim değinmek istediğim konu ise bundan farklı. Bir sekilde bu hizmeti aktif hale getirdini ama burada oluşturulan verilere DB Link mantigi içerisinde ulaşmak istediğinizde;

"OLE DB provider "SQLNCLI11" for linked server "#########.DATABASE.WINDOWS.NET" returned message "Unspecified error". Msg 40515, Level 16, State 2, Line 1 Reference to database and/or server name in 'AdventureWorks2012.sys.sp_tables_info_90_rowset_64' is not supported in this version of SQL Server."

ya da 

"Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc) Reference to database and/or server name in 'AdventureWorks2012.sys.sp_tables_rowset2' is not supported in this version of SQL Server. (Microsoft SQL Server, Error: 40515)"

seklinde hatalar ile karsılaşabilirsiniz. Iste bu sorunu çözmek icin mevcut DB Link baglantisini silmeniz ve asagidaki scripti kullanarak yeniden oluşturmanız gerekmekte. Bu islemi yaptiginizda sorun çözülecektir.

'database name'

@rmtsrvname = 
@useself = 
@rmtuser = 
'Azure login',
@rmtpassword = 

EXECsp_serveroption 'PROD','rpc out', true

Dynamics 365 CRM egitimi

Dynamics CRM, Dynamics 365 CRM’e dönüştü.  Bu dönüşümün detaylarını  CRM MVP'si olan uzman eğitmenlerimizden öğrenmek ister misiniz?

-Dynamics 365 sertifikasyon sınavlarına hazırlananlar,
-Dynamics 365 CRM geliştiricileri,
-Proje Yöneticileri
-Kullanıcılara yönelik hazırladığımız sertifikalı uzman eğitmenlerimizin vereceği eğitimleri kaçırmayın. 

Omerd CRM Eğitim serisi ile farklı seviyelerdeki profesyonellere uygun olarak planlanan eğitimlerimizin tüm detaylarına ve kayıt formuna buradan ulaşabilirsiniz. 

Eğitim Yeri : Wissen Akademi – Beşiktaş / İstanbul

Eğitim Konuları ve Ücretler:

14-15 Mayıs : Uygulama/Application – 2 Gün   
$399 + KDV

(Kimler Katılabilir: Her seviyedeki CRM kullanıcıları)

16-17 Mayıs : Özelleştirme/Customization 2 Gün 
$399 + KDV

(Kimler Katılabilir: Sistem Yöneticileri, Orta ve İleri Düzey CRM kullanıcıları)

21-23 Mayıs : Geliştirme/Extending – 3 Gün  
$499 +KDV

(Kimler Katılabilir: Yazılım Geliştiriciler)

14-23 Mayıs Tarihleri arasında Gerçekleştireceğimiz Eğitimimize Siz de Katılmak İsterseniz Lütfen "Kayıt Olun" Butonundan Rezervasyon Yaptırın.

Kayıt Olun!

CRM Solution Concepts

Solutions and layering are fundamental concepts within CRM that need to be fully appreciated and understood to construct an approach to lifecycle management for Dynamics CRM applications. There are three key concepts that need to be introduced:

§   Solution Packages: Act as containers for functionality required to be deployed as a unit

§   Layers: The consequence of a specific component being affected by change within one or more solutions

§   Managed Properties: The mechanism to control how layers interact with each other

Note: This appendix provides a “quick reference” overview of more detailed information that is presented in the Dynamics CRM 2011 SDK, in the section Package and Distribute Extensions.

Solution Packages

Solution packages are the container mechanism to transport Dynamics CRM configuration and customization between organizations. There are two types, unmanaged and managed.


§   Contains only customizations from the unmanaged layer

§   Will not include dependent components

§   Imports only into the unmanaged layer:

       Ideal during development

       Everything within could be changed

       Overwrites existing customizations

§   Contains a complete copy of each component


§   Will get its own layer on import.

§   Analogous to an installer “.msi” file; it is a distribution package.

§   Contents cannot be directly changed.

o    This does not mean DRM.

§   Components may be customized where managed properties allow.

§   Contains only deltas for component that supports merging (FormXML, Ribbon & Sitemap).


Layers should be considered on a per-component basis. Although typically drawn to convey the effect of a solution on another solution, this is always at a component level.


§   There is only one. It always exists.

§   All customizations made on this server/organization will reside here.

§   “Solutions” exist here as containers.

       Ownership by solutions is weak; by-reference only.

       No independence between solutions. If one component exists in two solutions, they both see the current state of the component equally.

§   New customizations made will trump all prior customizations. (They override the lower layers.)

§   Customizations cannot be undone, but they can be deleted.



§   There can be many:

o    Always one for the “system” solution.

o    Discrete layer for each managed solution package imported (at a per-component level).

§   Only created by importing a managed solution.

§   Time of import sets order of precedence.

§   You cannot customize components inside the layer.*

§   They can be deleted, replaced, and versioned.

§   Deleting a layer may delete data.

Managed Properties

Managed properties control how layers interact with each other; they control the level of customization achievable on top of components from a managed solution that has been imported. After releasing a managed solution, the managed properties can only be changed to reduce how restrictive they are.

§   Control order of precedence (which customizations to allow on top of an imported solution’s managed layer).

§   The ability to customize cannot be removed or disabled during solution update.

§   The ability to customize can be enabled during solution update.

§   The default ability to customize is fully customizable.

In general, if the consumers of the solution are not known or trusted or the changes that may be made could break the solution, it is recommended to lock down the managed properties for the solution. These managed properties can be opened back up to enable specific components to be customized at a later date as needed.

Merge Behavior


New customizations trump all prior customizations, overriding the lower layers.

Important: Changes applied by importing an unmanaged solution cannot be uninstalled. Do not install an unmanaged solution if you want to roll back the changes.

Managed (No Overwrite)

§   Customizations in unmanaged layer are preserved.

§   Importing newer versions creates new managed layers directly above the previous version’s managed layer.

§   Importing the same version replaces contents within the existing layer.

§   Importing cannot remove pre-existing components.

§   Generate and import a minimal solution to “hotfix” a larger solution.

§   Reports, E-mail templates, and plug-in assemblies skip updates if they are not the “top” layer.

Managed (Overwrite)

The recommended approach is to always preserve customizations (no overwrite). If the updates are mandatory for the solution to function appropriately, then overwrite is needed:

§   Replaces the content of the “unmanaged” layer and makes the managed solution the top layer.

§   Ensures that updates included in the solution are effective.

§   Overwrites all customizations and should be used with caution.

§   Greater use of managed properties makes this approach less necessary.

Dependency Tracking

The solutions framework automatically tracks dependencies across components.

§   The following operations perform dependency checks/operations:

       Individual components: CRUD, Add Existing (to a solution).

       Solution: Import, Export, Delete (uninstall).

§   Dependencies are version agnostic. As long as the unique name/id of the component and the package type matches, a dependency is considered valid.

       Managed components cannot depend on unmanaged components.

Shared Publishers

§   Components in managed layers will be owned by the solution publisher.

§   Publisher owns the component, not the solution.

§   Components with same name and publisher will be considered the same thing.

§   Removing a solution does not remove a component when it is referenced by another solution using the same, shared publisher.

§   Be wary of predictable names and collisions.

       For web-resources, create names that imply virtual directories


14 Nisan Microsoft Turkiye Dijital Donusum etkinligi "Turkiye Dijital Donusumun Neresinde?"

Bir etkinlikle daha yine karsinizdayiz. 14 Nisan gunu Microsoft Turkiye ofisinde sevgili Zehra Öney, Dr. Serhat TATLI, Murat Erdör, Mustafa Kara, Volkan Türkyılmaz ve Serkan Esen ile birlikte muthis bir etkinlik gerceklestirecegiz. "Turkiye Dijital Donusumun Neresinde?" isimli etkinligimizde Turkiye'de dijital donusum projelerini nasil yaptigimizi ya da yapamadigimizi irdeleyecegiz. adresinden etkinlige kayit olabilirsiniz.  Bu etkinligi kacirmayin uzulursunuz benden soylemesi... 

Dynamics 365 Community Event in Dubai on 9th and 10th February 2018

Dynamics 365 Saturday is a free Technical & Strategy Event Organised by the Microsoft Dynamics Community MVP’s For CRM and ERP professionals, technical consultants & developers. Learn & share new skills whilst promoting best practices, helping organisations overcome the challenges of implementing a successful digital transformation strategy with Microsoft Dynamics 365.

Dynamics 365 Saturday will replace CRM Saturday to provide a single platform to serve the whole Dynamics 365 community, the core customer experience values and ethics of CRM Saturday will continue to live on through 365 Saturday with the rest of the Dynamics Community.

I have a session in this event on 10th February. Session name is “Dynamics 365 V9 New Features & Deprecations” in Microsoft Dubai Office in Media City between 13:00 and 14:00. Also I will share my knowledge on Dynamics 365 in Hackathon on 11th February.

My session focuses on who interested in taking the plunge to “code”. The session will be covering all development structure. Attendees can easily see the difference between versions from a development perspective and will be particularly helpful for those who work on upgrade projects.

For more information and program agenda please visit : 

We would like to see you there.