Tridion · Content Delivery · Sites 9

Using an in-browser IDE to Explore SDL Tridion Sites 9 Public Content API with GraphQL

In SDL Tridion Sites 9.0 released this new Public Content API (PCA) based on GraphQL query language and available as GraphQL endpoint in the Unified Delivery Platform (UDP) as combined content service for content delivery for Sites and Docs to deliver the dynamic experience to different channels in a headless way.


Why GraphQL?

  • Elegant Data Retrieval
    • Single endpoint
    • No versioning required
  • Query efficiency
    • Single-trip requests
    • Return only what’s needed
  • Backend stability
    • Data can be changed without changing clients
    • Structure dictated by spec
  • Improves data
    • API organized into a simple, understandable graph schema
    • Self-documenting
  • Large community

To explore GraphQL using in-browser GraphQL IDE:

To explain how to test and explore GraphQL using Chrome extension in-browser  Embedded GraphQL IDE in the Content service OAuth Authentication enabled URLs.

Before that test to make sure SDL Microservices are installed correctly and ensure it’s accessible in your local or where you are going to run this test that system should be able to access SDL microservices URL with respective port.

  1. To install chrome extension requestly plugin by visiting this below URL in the browser and install it.
  2. Add New Rule and select “Modify Headers in HTTP Request and Response” rule.
  3.  In order to perform queries on the Public Content API from a graphical IDE such as GraphiQL, obtain an authentication token from the Content Delivery Token Service(which runs alongside the Discovery Service), then pass that token to GraphiQL in a request header in your requests, In our case,  To create a new rule to pass the pre-generated valid token value, How to generate the token value using postman request refer to this article.
    Request Header: Authorization 
    Value: Bearer client_id%3Dcduser%26Role%3Dcd%26FirstName%3DCD%26AllowedCookieForwarding%3Dtrue%26LastName%3DUser%26expiresOn%3D1531835268069%26digest%3D0fSvAGLWzRtX7TLZSzxTwnVOP5AP-fkF13AjpKS81U%3D
    Request URL contains: /cd/api 


  4. Access this below content service graphQL endpoint URL in the browser
  5. Copy and paste below simple query to the GraphQL IDE
  # Get first 10 publications
  publications(namespaceId: 1, first:10) {
    edges {
      node {



Multi namespace id 1 is Sites, id 2 is docs.

GraphQL samples refer to the SDL documentation

I hope it helps

If you have any questions, please direct your questions here.

ECL · Sites 9 · Tridion

Using Flicker ECL Connector Integration with SDL Tridion Sites 9.0

This post will explain step by step how to install and setup to use Flicker External Content Library (ECL) connector in SDL Tridion Sites 9.0.

  1. Download the Bart ECL Flicker provider source
  2. Extract and Open the Flickr ECL Provider.sln solution file
  3. Copy the Tridion.ExternalContentLibrary.V2.dll from your SDL Tridion Sites installed server location
    [Tridion-Home]\bin\clients\ to your solution and Add a References make it CopyToLocal to false
  4. Build the application
  5. Go to C:\ProgramData\SDL\SDL Tridion\External Content Library\AddInPipeline\AddIns\ and create a folder  “FlickrProvider”
  6. Copy the build files to FlickrProvider
  7. Create a Flickr API key?
    • Step 1: Go to Flickr
    • Step 2:  If you have created an account with Flickr, Sign In, else Sign Up
    • Step 3:  Click on API Keys
    • Step 4: Apply and create the app details to get the API Key and note the UserID of your Flicker account
      Eg User account ID: "389927622@N03"
  8. Go to CME Administration -> Multimedia Types and create the ECL Library MIME Type as application/externalcontentlibrary, the extension is eclecl_mimetype
  9. Go to your Master publication and create the folder as “Flicker Stubs” and note down the TCM URI of the folder
  10. Go to SDL Tridion Sites Installation [Tridion-Home]\config\ folder and update the ExternalContentLibrary.xml config to add the mount point for Flickr provider
    <MountPoint type="FlickrProvider" version="*" id="flickr" rootItemName="Flickr">
            <StubFolder id="tcm:2-4-2" />
        <FlickrApiKey xmlns="">fb32195b65809d25da2ec84983833xxxx</FlickrApiKey>
        <FlickrNSID xmlns="">13313714@N04</FlickrNSID>
  11. Restart the SDL Web Content Manager Service Host
  12. Access to verify the Content Publication for Flicker ECL Items



I hope it helps

If you have any questions, please direct your questions here.

Sites 9 · Tridion

SDL Tridion Sites 9.0 Integration with SAML 2.0 Azure Active Directory

This is my first blog of the year and also for SDL Tridion Sites 9.0, I would like to blog about my learning one of the great new feature SAML 2.0 support on SDL Tridion Sites 9.0.

Previously, Content Manager supported Single Sign-On (SSO) solutions that are now outdated and not Cloud-ready for the browser-based user interfaces (Content Manager Explorer and Experience Manager). Now, In the SDL Tridion Sites 9.0 product offers support for SAML 2.0, supporting both an Identity Provider-initiated (IdP-initiated) and a Service Provider-initiated (SP-initiated) scenario. User provisioning and group mapping are also supported.


SSO – SAML 2.0 Support

  • Use corporate accounts to log in
  • Support for login flows
    • Identity Provider (IDP) initiated
    • Service Provider (SP) Initiated
  • User provisioning with Group mappings
  • SDL Tridion Sites session / SAML token expiration and renewal


  • SDL Tridion Sites should be in HTTPS setup
  • Azure Active Directory
    • Azure Directory ID
    • Setup AD Users and Groups (note the group object id which needs to be mapped with CME Group identity provider later in this setup)
  • App Registrations
    • Display Name: SDL Tridion Sites 9.0
    • Application Type: Web app / API
    • App ID
    • Reply URL must be https://vagrant-2016/WebUI/ (always with / in the end)
    • In the application registration Manifest, make sure groupMembershipClaims set to All.

AzureAD: “real” Idp-initiated scenario is only available for Premium subscriptions

Steps to set up and activate SAML 2.0 in SDL Tridion Sites 9.0

  1. Open PowerShell Window As Administrator
  2. Go to [Tridion-Home]\bin\Configuration Scripts
  3. In order to enable SAML setup, It’s mandatory to keep SDL Web application to be in https
    1. Run this command to enable https on SDL Web .\ SetupHTTPS.ps1


  1. Copy SetupAzureIDP_params_sample.txt file from [Tridion-Home]\bin\Configuration Scripts\Samples\ to [Tridion-Home]\bin\Configuration Scripts\ folder and rename to SetupAzureIDP_params.txt and necessary to be modified as highlighted values in the image

Fields to modify in the AzureAD params sample:
Where SP_Audience is the Application ID
All Other IDs are Directory ID


Azure App Registration ID:




Azure Active Directory ID:


Azure Active Directory ID – To find it in the Azure Active Directory -> Properties


  1. Run .\SetupSAML.ps1
  2. Access CME and Authenticate with from Azure AD login page
  3. Access to CME Administrator -> User Management -> Groups and Create new Group called “External Authors” and then specify the Group Visibility of the publications
  4. In the External Authors Group Members tab – Add the azure Identity provider
  5. Note the Azure Group Object ID which needs to be mapped with CME Group identity provider
  6. Once the successful configuration of Azure Identity provider Group Mapping configuration and then It will automatically sync the Azure group Users to SDL Tridion Sites.




Thanks to Anton Minko for a good demo.

It was a really good happy learning knowledge and sharing.

I hope it helps if you have any questions, please direct your questions to Tridion StackExchange

Content Delivery · DXA · Elastic · Tridion · Web 8

TDS event presentation – SI4T based Elasticsearch Integration for SDL Tridion Web 8+ with DXA 2.0

Tridion Developer Summit has been held at The Eye Sep 6th and 7th, I also had the opportunity to present and speak in the event,  about SI4T based Elasticsearch Integration for SDL Tridion Web 8+ with DXA 2.0 and followed by Demo and also TDS DXA Workshop.

Once again, Robert Curlette did an excellent job organizing and running the TDS 2018 event.


Introduction to Elasticsearch

Elasticsearch is an open-source, RESTful, distributed search and analytics engine built on Apache Lucene. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents, ElasticSearch is also a Document-based NoSQL Data Store.

ElasticSearch Features

  • An Open-source
  • Supports Full-text Simple and Powerful Search
  • Supports REST Based API (JSON over HTTP)
  • Supports Real-time Search and Analytics
  • By Definition, Distributed
  • Supports Multi-Tenancy Feature
  • Support Cloud and Big Data Environments
  • Supports Cross-platform
  • Denormalized NoSQL Data Store

Advantages or Benefits of ElasticSearch

  • An Open-source
  • Light Weight with REST API
  • Highly Available. Easily and Highly Scalable
  • Supports Caching Data
  • Schema-Free
  • Fast Search Performance
  • Supports both Structured and UN-Structured Data
  • Supports Distributed, Sharding, Replication, Clustering and Multi-Node Architecture
  • Supports Bulk Operations
  • Build Charts and Dashboards within no time


  • SDL Web 8.5 CMS with DXA 2.0
  • SDL Deployer Service
  • Download Elasticsearch
  • Download the SI4T TBBs source
  • Download the SI4T based deployer Elasticsearch storage extension source
  • Download the DXA Elasticsearch Search module source

Note: later elasticsearch deployer extension source and DXA elasticsearch Search module source repository will be moved/merged part of si4t and SDL community Github repositories.

Elasticsearch Installation / configuration

    1. Download and extract Zip file to local File system:
    2. Extracted Zip file to D:\Apps\elasticsearch-6.2.2
    3. Open command prompt run as administrator and then run this below command to install the Elasticsearch service
      D:\Apps\elasticsearch-6.2.2\bin>elasticsearch-service.bat install
    4. Go to Services Console and Start the Elasticsearch service as Startup as Automatic
    5. To allow Elasticsearch remotely accessible by editing elasticsearch.yml in this path D:\Apps\elasticsearch-6.2.2\config to provide

      Warning: Elasticsearch doesn’t have any built-in security, it is very important that you do not set this to any IP address that is accessible to any servers that you do not control or trust. Do not bind Elasticsearch to a public or shared private network IP address!

    6. After ElasticSearch is started, access the default URL http://localhost:9200/
    7. To create the static field mapping by running the below mapping template si4t-elasticsearch.json by postman put a request to http://localhost:9200/tridion or by running simply below PowerShell script.
$url = "http://localhost:9200/tridion"
$json = Get-Content -Raw 'C:\TEMP\si4t-elasticsearch.json' | Out-String
$contentType = "application/json" 
Invoke-RestMethod -Method PUT -Uri $url -ContentType $contentType -Body $json;


    "mappings": {"si4t-content-default": {
        "dynamic_date_formats": ["date_time_no_millis"],
		"dynamic": "strict",
        "_all": {"enabled": false},
        "_source": {"enabled": true},
        "properties": {
            "itemtype": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
			"parentsgid": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": false
	"publicationid": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
	"schemaid": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
	"sgid": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
	            "store": false
	"title": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
	"summary": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
	"type": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": false
	"url": {
                "type": "text",
                "fields": {"keyword": {
                    "type": "keyword",
                    "index": true,
		    "store": true
            "body": {
                "type": "text",
                "index": true,
                "store": true

Setup SI4T Template TBBs / DXA Search modules in Content Manager:

  1. Download and extract the SI4T TBBs source to open in the Visual Studio.
  2. Copy the Tridion DLLs and TcmUploadAssembly.exe from your SDL Tridion installed server location [Tridion-Home]\bin\clients\ and Add a References
  3. Build the application and Upload the DLL to Tridion using TcmUploadAssembly.exe, alternatively, you can also provide this command in Visual Studio project properties post-build.
  4. D:\SI4T-1.2\tbbs\References>TcmUploadAssembly.exe /folder:tcm:2-74-2 TcmUploadAssembly.config "D:\SI4T-1.2\tbbs\bin\Release\SI4T.Templating.dll"


  5. Add the SI4T TBBs to existing Page Templates eg. Home Page Add-SI4T-TBBs

Installing DXA Search module in Content Manager:

Run a PowerShell script to Install the DXA Search module in the Content Manager.

  1. Download the Search module from the following location:
  2. Open a PowerShell command prompt in Run as administrator mode.
  3. Go to the modules\Search\ folder, and run the following command:
    .\cms-import.ps1 -importType module-and-permissions -cmsUrl http://localhost:7086/
  4. To update the Building Blocks/Settings/Search/Site Manager/Search Configuration component with new URLs for your staging and live elastic search URL or Configuring the Search Index URL in Topology Manager
    .\ttm-configure.ps1 -cdEnvironmentId CdEnvironmentStagingId -searchQueryUrl http://localhost:9200/tridion

DXA Search module by default will install SI4T TBBs templates, not required to install separately for SI4T TBBs templates

Elasticsearch Deployer extension – Setup:

  1. Download and Extract the EI4T source and build and copy the lib folder dependencies files and ei4t-elastic-1.0.jar files to SDL Deployer service installed location under services/elastic-search folder
  2. Copy the SearchDAOBundle.xml config to SDL Deployer config folder.
  3. Add the  <Bundle src=”SearchDAOBundle.xml”/> under the <StorageBindings> section.
  4. Replace the Storage class attribute value to
  5. Add the <Indexer Class=”org.si4t.elastic.ElasticSearchIndexer” DocExtensions=”txt” documentEndpoint=”http://localhost:9200/&#8221; indexName=”tridion” indexType=”si4t-content-default”/> tag under the Storage sectionNote:

    • Index name must be in lower case, otherwise, it throws an Exception.
    • It is recommended to use Type also in the lower case.
  6. Uninstall and then Re-Install the service to pick up the new elastic-search folder and jars
  7. Configure Log files for SI4T and elasticsearch
       <appender name="rollingSI4TExtensionsLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <appender name="rollingElasticExtensionsLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
       <logger name="" level="${log.level}" additivity="false">
                <appender-ref ref="rollingSI4TExtensionsLog" />
      <logger name="org.si4t.elastic" level="${log.level}" additivity="false">
             <appender-ref ref="rollingElasticExtensionsLog" />
  8. Publish the pages and verify the indexed output by accessing this URL http://localhost:9200/tridion/si4t-content-default/_search


Installing the DXA Search module in the web application:

  1. Download the DXA Elastic Search module source from the following location and to open in the Visual Studio
  2. Build and copy the bin and Area folders to DXA web application
  3. Open Unity.config to update to add the following config sections

Add UnityDeclaration:

<assembly name="Sdl.Web.Modules.Search" /> 
<namespace name="Sdl.Web.Modules.Search.Providers" />

Set UnityTypeMapping:

<type type="ISearchProvider" mapTo="ElasticSearchProvider" />

I hope it helps if you have any questions regarding post your question in Tridion StackExchange.

Happy Coding and Sharing!

Translation Manager · Tridion · Tridion Workflow · Web 8

Translation Manager Review and Preview workflow setup and configuration in SDL Tridion Web 8.5

In SDL Web 8.5 introduced new Translation Manager functionality Publish to Preview -We can now configure to publish content to a staging site when it is being sent out for translation and/or when translated content gets retrieved and published.

Review and Preview steps in an SDL TMS workflow

You can add a Review and/or a Preview step to SDL TMS workflows. This step allows translated content that has been retrieved from SDL TMS to be previewed and reviewed before being accepted.  The Review step only works in combination with SDL TMS 11 or higher.

When a translation job first gets sent back to SDL Web, users can preview how the translated content looks in the context of a website, review it and send it back for translation if required, without creating a new job or copying the job.


Translation Manager workflows SDL documentation


  • In Content Manager, Translation Manager module Installed and configured Translation Manager connector and Translation Manager DB
  • Setup SDL TMS workflow (Review and Preview steps based on your business requirement)
  • The API key and password of an SDL TMS user has to be created and associated with your project organization and make sure that TMS API Permission access Enabled for that user.

Setup in Content Manager:

  1. Update the TranslationManager.xml file,  located in %TRIDION_HOME%\config

Note: To use the Review/Preview functionality, the ServiceTcmUserName user must have Administrator rights on Content Manager.

<TmsServer port="443" compression="false" ssl="true" applicationKey="xxxxx" password="xxxx">https://<tms-url></TmsServer>

The password to be used in combination with the API key. SDL recommends using its encryption tool to encrypt the password after you set it in the TranslationManager.xml file.

Navigate to your Tridion installation /Translation Manager folder.

  • Run the executable with the following command to encrypt passwords:
EncryptTranslationManagerConfiguration.exe /e
  • Run the executable with the following command to decrypt passwords:
EncryptTranslationManagerConfiguration.exe /d
  1. Restart the SDL Web Translation Manager and SDL Web Content Manager Service Host services
  2. Setup Translation Review Workflow Process for Translation Manager in SDL Web
    • Download the Translation Manager Review workflow as a Visio (.vsdx) file by clicking here and unpacking the zip file
    • Open the Translation Review.vsdx file in Visio 2013
    • Double click the START green button and connect the CMS instance to import the Translation Review Workflow into your parent publication as per your business requirement
    • To allow the review and/or preview of translated content – Translation review process has been added to the Target Schema or Target Structure Group

      Adding a translation Review step to Schemas

      • In the Content Explorer, open the Schema.
      • Click the Workflow
      • In the Translation Manager Workflow section of the screen, select the workflow you want to use from the Translation workflow process drop-down list.
      • Also, ensure all the required schema fields are enabled Translatable checkbox option
      • Click Save and Close in the Ribbon toolbar to save your changes
    •     Schema-Workflow
    • Configuring Source content publication and enable the TMS workflow on target language as highlighted in the image.
    • Source-publication-TM
    • Configuring target content publication as highlighted in the image


In CME component open window additional Translation Segments tab displayed during the In Translation job get back to SDL Web for Review and Preview. left side original source text send for translation and right side translated target language text retrieved from TMS, we can able to edit this Translated Text in SDL Web only if that user assigned to Translation Review on workflow.


I hope it helps.

DXA · Tridion · Web 8

Troubleshooting the Experience Manager (XPM) for SDL Tridion Web 8.5 with DXA 2.0

In the community, a lot of questions related to Experience Manager (XPM) setup, Although the Session-enabled Content Service and Preview Service are set correctly, the Update Preview feature on Experience Manager (XPM) does not reflect the updated content and constantly prompts for updating the preview when using DXA 2.0  web application.

“Update Preview Your changes to this page is not up to date”

This message may be seen for a number of reasons, such as due to misconfiguration or the connection with the database.
It is also possible the above are correct and the message appears to alert the user that the published content does not reflect the latest edits.

High-Level XPM Integration Architecture:


To Troubleshooting the Experience Manager (XPM) by following steps:

  • To ensure Installation done with the correct version of the preview service and session-content services and registered with discovery double check the port information is correctly setup.


  • To ensure the following config sections are present and configured correctly

In Preview Service side:

cd_stograge_config.xml – to ensure this following sections are present.

   <Bundle src="preview_dao_bundle.xml"/>
       <Wrapper Name="SessionWrapper">
          <Storage Class="" Id="sessionDb" Type="persistence" dialect="MSSQL">

cd_ambient_config.xml –  To make sure that <WhiteList> is enabled and the ip address that is requesting is within the white-list range, or just add the following to enable all


<GloballyAcceptedClaims> has <Claim Uri=”taf:session:preview:preview_session”/> enabled
– preview both system and non system cartridges should be enabled

<Cartridge File=”cd_webservice_preview_cartridge.xml” Category=”SYSTEM”/>
<Cartridge File=”cd_webservice_preview_cartridge.xml”/>

In Session enabled Content Service side:

cd_stograge_config.xml – to ensure this following sections are present.

   <Bundle src="preview_dao_bundle.xml"/>
       <Wrapper Name="SessionWrapper">
          <Storage Class="" Id="sessionDb" Type="persistence" dialect="MSSQL">

cd_ambient_config.xml –  To make sure that <WhiteList> is enabled and the ip address that is requesting is within the white-list range, or just add the following to enable all


<GloballyAcceptedClaims> has <Claim Uri=”taf:session:preview:preview_session”/> enabled
– preview both system and non system cartridges should be enabled

<Cartridge File="cd_webservice_preview_cartridge.xml" Category="SYSTEM"/>
<Cartridge File="cd_webservice_preview_cartridge.xml"/>

In DXA Web application side:

cd_client_conf.xml Cache is disabled

cd_ambient_conf.xml – to ensure ForwardedClaims element is enabled and contains

<Claim Uri="taf:session:preview:preview_session"/>

In Java Web App: Enable the Ambient Data Framework by adding the following to your web.xml:

   <filter-name>Ambient Client Filter</filter-name>

 <filter-name>Ambient Client Filter</filter-name>

In .NET Web app:

In the web.config – Ensure the presence of the following inside the <httpModules> section inside the <system.web> section (create an <httpModules> element if it does not yet exist):

<add type="Tridion.ContentDelivery.AmbientData.HttpModule"  name="Tridion.ContentDelivery.AmbientData.HttpModule" />

Refer to the documentation here


  • To make sure to Add “Enable inline editing for content” TBB
  • To ensure if CMS application is running in https then mandatory to run your web application also in https.
  • To ensure to add the staging website URL in topology manager, in case if you are testing with your local system with source build for debugging then also ensure to add your localhost:port domain details to topology manager.
  • To enable content service logs to debug level to see claim cookie forwards are appearing in the core_log.- Check if cookies are enabled:
    2018-03-23 16:35:43,864 DEBUG AbstractAmbientDataServletFilter - Cookie forwarding is enabled: true

    – Check if cookies forwarding is enabled

    2018-03-23 16:35:43,864 DEBUG AbstractAmbientDataServletFilter - Cookie forwarding for current request is allowed: true

    – Check that the following log event is NOT present

    2018-03-23 16:35:43,864 DEBUG ClaimCookieDeserializer - The list of ClaimsCookies sent to be deserialized is empty!
  • To ensure preview service XPM Session Broker DB to have a Read and Write permissions to the session_db user.
  • To ensure in XPM HTML Markup are correctly rendering in web app the HTML source
  • To ensure with fiddler CMS XPM scripts are loading correctly
  • If you press the Update Preview button then – you should be able to see the session details in the session preview DB (PREVIEW_SESSIONS or PREVIEW_SESSION_ITEMS tables).
  • To ensure in the CMS Settings -> Inline editing -> Session Preview Settings -> Preview service is enabled.

enter image description here

I hope it helps.

DXA · Tridion · Web 8

Upgrading to DXA 2.0 from previous version 1.7 on SDL Tridion Web 8.5

This post explains step by step Upgrade to DXA 2.0 from the previous version DXA 1.7

What’s new in this release

SDL Digital Experience Accelerator (DXA) version 2.0 introduces a new architecture and additional features read more

DXA upgrades documentation


  • SDL Web 8.5 CMS
  • DXA version 1.7 or 1.8 – In our case upgrading from 1.7, if your version < 1.7 then before upgrading to 2.0 you need to bring your version to 1.7 or 1.8 from your previous versions
  • Download the DXA 2.0 from the SDL AppStore or Github.
  • SDL Web Content Delivery layout: CD_10.1.0.8270 (The DXA Model Service requires this specific CD hotfix version regardless of whether you are using SDL Web version 8 or 8.5. Request CD hotfixes through the SDL Support portal at

Installing the DXA Model Service manually:

  1. Go to your Content Delivery Server where your Content Service running installation location and create a folder called dxa-model-service.
  2. Access to the downloaded media file extract and go to \SDL.DXA.NET.2.0\cis\dxa-model-service\standalone and copy all the files and subfolders to the newly created dxa-model-service folderdxa-model-service
  3. Access to file extract and go to \CD_10.1.0.8270\release\template\standalone and then
    • Copy the following two folders to the newly created dxa-model-service folder
      • bin\
      • lib\
    • Copy the following files to the newly created dxa-model-service under the services\model-service\ folder
      • services\discovery-client\discovery-registration-api-10.1.0-1017.jar
      • services\discovery-client\oauth-10.1.0-1011.jar
      • services\discovery-client\adf-engine-10.1.0-1011.jar
  4. By default, this DXA model microservice runs on the port 8998,  If you need to change the port go to the \dxa-model-service\config\cd_storage_config.xml file and change the port as highlighted in the below imagemodel-service-config
  5. Also important to change the discovery service port and credentials details in the cd_storage_config.xml according to your environment.
  6. Install the Model Service as a Windows Service by using this PowerShell command
  7. Open Powershell and go to the \dxa-model-service\bin folder and run this command to install the model service.
    .\installService.ps1 --register --Name="DXAModelServiceStaging" --DisplayName="DXA Model Service Staging" --Description="Content Delivery microservice for DXA Staging" --server.port="8998"
  8. Run the discovery-registration command to ensure output has model service endpoint details.
    java -jar .\discovery-rgistration.jar read
 "Capability" : "com.sdl.web.discovery.datalayer.model.ContentServiceCapability",
 "id" : "DefaultContentService",
 "lastUpdateTime" : 1520070585339,
 "uri" : "http://localhost:8081/content.svc",
 "extensionProperties" : [ "java.util.ArrayList", [ {
 "key" : "dxa-model-service",
 "value" : "http://localhost:8998"
 }, {

Upgrading DXA on the Content Manager server:

  1. Open a PowerShell command prompt in Run as administrator mode
  2. Go to \SDL.DXA.NET.2.0\cms folder and run the cms-import.ps1 with following command parameters
    .\cms-import.ps1 -importType master-only -masterPublication "100 Master" -cmsUrl "http://localhost:80/"
  3.  After successful upgrade above script ensure your all your DXA publication website Page template and component templates uses the Render Page Content => Generate DXA R2 Page Model and Render Component Content  => Generate DXA R2 Entity Model TBBs.
  4. Republish the Publish Settings Template Building Block in all your DXA publications in the  \100 Master\Building Blocks\Framework\Developer\Templates
  5. and then Publish the following items for DXA 2.0
    • Navigate to Categories & Keywords and select the Category Sitemap [Navigation]  and publish
    • Navigate to \100 Master\Building Blocks\Framework\Developer\Templates and Publish the Generate Data Presentation TBB, while publishing removes the Republish only option.

Content migration Note:

Starting in DXA 2.0, content is published in a JSON format rather than in XML and uses the R2 Data Model. After upgrading to DXA 2.0we strongly advise republishing to the R2 data format to benefit from its numerous advantages. Republishing is not, however, mandatory.

For content that you cannot republish or do not want to republish until a later date, the Model Service Converter is able to convert the content to the format requested by the web application. Content published prior to installing to 2.0 remains in the DD4T data model, and it can still be accessed and rendered.

Upgrading the DXA web application for .NET

To upgrade your .NET web application follow the documentation.

Since I was upgrading the default core DXA 1.7,  I did prepare the DXA2 Web app by running this command:

.\web-install.ps1 -distDestination "D:\websites\DXA2_Staging" -webName "DXA2 Staging" -siteDomain stagingdxa.local -sitePort 80 -discoveryServiceUrl http://localhost:8082/discovery.svc -logFolder "D:\DXA-logs\DXA_Staging\" -siteLogFile "staging-site.log"

Rebuild your web app and DXA modules as mentioned in the SDL documentation and Compare and review changes to configuration files and configure according to your environment settings.

I hope it helps. Happy with learning and sharing.