Migrate Sitecore SQL databases to Amazon RDS

This blog post will guide you to migrate Sitecore SQL Server databases to Amazon RDS.

Unfortunately, you won’t be able to directly use the MDF and LDF files in AWS at the moment so to migrate SQL database to Amazon RDS we are going to use SQL Azure Migration Wizard. Follow below steps for migration –

  1. Before starting migration please make sure
    1. You are able to connect to Amazon RDS. To check it you can utilize SQL Server Management Studio
  2. Down SQL Azure Migration Wizard tool
    1. Extract the downloaded zip file and open SQLAzureMW.exe file.
  3. Start migration
    1. Once you open SQLAzureMW.exe. you will see a page like shown in below image. In this step you have to select process. Since we are migrating Sitecore database so we will select Database under Analyze/Migrate. For Target Server dropdown list select Azure SQL Database and click next
      1Script Wizard<br /><br /><br /><br /><br /><br />
Select Process<br /><br /><br /><br /><br /><br />
Select the process you want the wizard to wak you through.<br /><br /><br /><br /><br /><br />
SQLAzureMW<br /><br /><br /><br /><br /><br />
This wizard gives you the options to anayzes, generate scripts,<br /><br /><br /><br /><br /><br />
and migrate database schemas and data from:<br /><br /><br /><br /><br /><br />
1) SQL Server to Azure SQL Database.<br /><br /><br /><br /><br /><br />
2) Azure SQL Database to SQL Server<br /><br /><br /><br /><br /><br />
3) Azure SQL Database to Azure SQL Database<br /><br /><br /><br /><br /><br />
It will also anayze SQL Profiler trace files and TSQL script for<br /><br /><br /><br /><br /><br />
compatibiltö,' Sues with Azure SQL Database.<br /><br /><br /><br /><br /><br />
NOTE: You must be DB Owner in order to anayze or migrate a<br /><br /><br /><br /><br /><br />
database.<br /><br /><br /><br /><br /><br />
Target Server<br /><br /><br /><br /><br /><br />
Anayze Onty<br /><br /><br /><br /><br /><br />
O SQL Profiler Trace File<br /><br /><br /><br /><br /><br />
O TSQL Folder<br /><br /><br /><br /><br /><br />
Anayze / Migrate<br /><br /><br /><br /><br /><br />
@ Database<br /><br /><br /><br /><br /><br />
O TSQL File<br /><br /><br /><br /><br /><br />
Run TSQL without Anayzng<br /><br /><br /><br /><br /><br />
O TSQL File<br /><br /><br /><br /><br /><br />
Server Maintenance<br /><br /><br /><br /><br /><br />
O Maintenance<br /><br /><br /><br /><br /><br />
Azure SQL Database<br /><br /><br /><br /><br /><br />
< Back<br /><br /><br /><br /><br /><br />
Next >
  4. Choose Source database
    1. This step allows you to choose the source database. First connect to your SQL server database by providing connection details. Once database server is connected successfully select source database and click on the button that says ‘Next.’ Please see below image
      5
  5. Choose action
    1. Once source database is selected then in this step select an option named as ‘Script all database objects’. This option can enable to do the complete migration of the database. But if you don’t want to migrate entire database then you select an option that says ‘Select specific database objects.’ Please see below image
      3
  1. Create SQl script
    1. Tool will create script of selected source database for the objects selected in previous step. You should save the script on local hard drive and the move ahead by hitting a click on a button ‘Next’.                         4
  2. Select Destination Database
    1. In this step provide your Amazon RDS server details and connect it. Once connected select the target database. If you have not created any database earlier, then create a new one using Create Database option and go next
      2
  3. Final Step and Review Target server Response
    1. Once you hit next in above step migration will start and you can review result of migration in this step. You can now connect to RDs database using your SQL Server Management Studio and check all the migrated data.  This tool will save a lot of time.
      6

      You may see below errors in migration report
      StoredProcedure [dbo].[aspnet_Setup_RemoveAllRoleMembers] — sp_helpuser is not supported in current version of Azure SQL DatabaseTo make sure there is no problem in migrated database because of above error I recommend connect to RDS database and make sure Stored Procedure  aspnet_Setup_RemoveAllRoleMembers is there.

Sitecore User Group Jaipur Successfully Launched

sugimg

The First Meetup organized by Sitecore User Group Jaipur

SUGJPR or the Sitecore User Group Jaipur organized their first ever technical meetup in Jaipur on November 19, 2016 from 2 p.m.-6p.m. at Hotel Sarovar Portico, Vaishali Nagar. The entire event was sponsored by Unicolumn Software Private Limited, which is a digital agency established in 2011 and a pioneer in the field of Sitecore development.

Why SUGJPR?

The founders talked about why they have come up with SUGJPR. And the reason is to foster use of Sitecore development. The platform aims to connect developers and people who have interest in learning new tips and tricks about Sitecore development.

Founders –

Topics and Presentations – 

Sitecore® Experience Platform™ – How you can own experience (Presented by Jagmohan Rathore Sitecore MVP 2017) 

The meetup event started with a presentation on Introduction to Sitecore where we explore the power of Sitecore and learn Features and talked about the need of using a CMS, what Sitecore is, how it brings a lot of opportunities for developers, content writers as well as marketers. The features, which make it such a desirable asset for large enterprises were also talked about such as managing multiple websites, using content between different websites, multi-lingual, drag and drop functionality, SEO optimization, automated deployment, easy integration of APIs, AB testing, Sitecore Analysis, etc.

The idea was to make the audiences aware of what Sitecore CMS is and how its ample amount of features could actually be very beneficial for your businesses.

Getting started with Sitecore – Building A Very Simple Website (Presented by Mahendra Shekhawat and Gaurav Agarwal) –

Basic of Sitecore installation, configuration and tuning of Sitecore in .NET environment, design and implement templates & layouts for a very simple website. Both gave a demo on how to build a website using Sitecore, which involved the basic functionality of the platform, hosting and accessing tools.

Networking Break -

The SUGJPR meetup event included a short networking break where students, developers, core organizers and others from the audience took some time to interact and connect with each other while enjoying snacks with tea or coffee.

Sitecore Experience Accelerator (SXA) (Presented by Vipin Banka)-

Later in the day, Vipin Banka, Solution Architect at Unicolumn and a Sitecore certified .NET developer 6.0, introduced Sitecore Experience Accelerator (SXA) to the audience. He also gave a detailed demo on the installation process and use of SXA among developers and content editors

Whats Next?

Next meet up is plan in the first quarter of 2017, So please stay tune and join us on Meetup –

https://www.meetup.com/Sitecore-User-Group-Jaipur-Meetup/

Thanks

First ever Sitecore Technical User Group Event in Jaipur by SUGJPR

SUGJPR happy to announce our first upcoming event on Saturday, November 19th, 2016 from 2.00 PM – 6.00 pm. Venue - Hotel Sarovar Portico Vaishali nagar, Jaipur

SUGJPR

Agenda: 

  • Sitecore® Experience Platform™ – How you can own experience -Explore the power of Sitecore and learn Features, Uses of Sitecore and how it is better then other CMSs.
  • Getting started with Sitecore – Building A Very Simple Website – Basic of Sitecore installation, configuration and tuning of Sitecore in .NET environment, design and implement templates & layouts for a very simple website.
  • Sitecore Experience Accelerator (SXA) -A set of toolings and processes to allow the rapid creation of websites by increasing the amount of work that can be done in parallel.

schedule Details- 

  • 2:00PM – 2:15PM – Welcome/Registration
  • 2:15PM – 2:30PM – Introduction
  • 2.30PM – 3:15PM – Presentation – Introduction to Sitecore® Experience Platform™
  • 3.15PM – 3:30PM – Break
  • 3:30PM – 4:15PM – Presentation -Getting started with Sitecore – Building A Very Simple Website
  • 4:15PM – 4:45PM – Snacks and Tea
  • 4:45PM – 6:00PM – Presentation -Sitecore Experience Accelerator (SXA)

Please join us  – https://www.meetup.com/Sitecore-User-Group-Jaipur-Meetup/events/235463719/

If you have any questions. Please contact us -

  • email – sitecoreugjaipur@gmail.com
  • Mahendra - +91 92525 82898
  • Gaurav - +91 80581 54358
  • Office - 0141-2358028

Sitecore Missing valid xDB license

Problem – In Sitecore versions 8.1 and above Sitecore analytics is not working and Sitecore logs show below information

INFO  **********************************************************************
INFO  xDB is disabled.
INFO
INFO  Tracking is enabled.
INFO
INFO  Missing valid xDB license.
INFO  **********************************************************************

Cause - Sitecore added an additional key to its license file. Sitecore 8.1 requires this new key to enable xDB features. Following could be the reason:

  • Your license does not contain this new key.
  • Your license does not allow xDB features.

Solution
Sitecore 8.1 now requires a license with the “Sitecore.xDB.base” key to enable all features of the Experience Platform. If your license file does not contain this key, Sitecore will default to Experience Management (CMS-only) mode. Any customers or partners with a license to Experience Platform should contact their account manager or login to SPN if they are missing this key.

Click here for more details

System.Reflection.TargetInvocationException error when Rebuilding #Sitecore Solr Indexes

Hi All,

We have a multilingual #Sitecore site. When I was rebuilding the #Sitecore indexes, I was getting a weird error that is

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

2016-06-01 19_06_37-Bentley - Microsoft Visual Studio (Administrator)

Generally we click on cross button, and rebuild the index again, sometime it works. :P

But in my case it’s not working. So I dig into the issue.

First of all I just opened the local solr url in browser like this http://localhost:8983/solr/

And then click on logging button on the left side and saw there were so many errors as shown in the below image.

2016-06-08_0851

By looking into the image, we can see that there are some language specific error. Like “zh” for Chinese, “ko” for Korean.

 

So now what to do?

 

Then after some searching I found that we have to do something with physical solr files. Now go to solr folder where you have configured solr for your project. Let’s assume you have configured solr with the name “project_master” and “project_web”. So follow the steps –

1)      Go to “solr/project_master/conf” folder.

2)      Then you will find an xml file named “schema.xml” there.

3)      Open this schema.xml file in notepad or so and search for “dynamicField” that is under fields section.

If you don’t find schema.xml file in conf folder then you need to follow following steps –

1)      Go to sitename/Sitecore

2)      Log into Sitecore with username and password.

3)      Then click on Sitecore button that is in left bottom corner.

4)      Then navigate to Control Panel, a screen will popup like following image.

2016-06-08_1038

5)      In this there are 2 links, then you need to click on “Generate the Solr Schema.xml file”.

2016-06-01 19_11_21-Sitecore

 

6)      You will see there are 2 fields “Source File” and “Target File”.

7)      In the Source File you need to provide a default schema.xml file. You can download default schema.xml here.

8)      In the Target File provide the target folder, where you want it to be.

9)      Now you are ready to customize “schema.xml” file.

 

When you will open this schema.xml, you will find that lots of dynamic fields are there something like this –

<dynamicField name=”*_t” type=”text_general” indexed=”true” stored=”true” />

 

Note – Before making changes in schema.xml you need to take care of apache server. In your PC click on “Start” button and search for “Monitor Tomcat”, click on it. You need to click on “Stop service”, after that you can make changes in schema.xml file.

 

In these dynamic field search for “zh, ko”, and you will find that there are no entries with these names, so now we need to make entry for these language types like below image. Make sure you have entry for each language that is causing error.

2016-07-01_1153

What “*” means, it will include all the entries ending with e.g. “t_zh”.

There are several “dynamicField type” like text_general, string, boolean, int, date, location, tint, tlong, tfloat, tdouble, tdate, pint, currency, ignored, random etc. I am using “text_general” here.

 

It’s done, no. There is still something we need to do.

Start you Tomcat (Apache) service again by opening Monitor Tomcat.

Now you again need to go to #Sitecore and rebuild your index again.

Finally it’s done now.

If you got error again, then you need to follow this process again then check the logging and make sure all language specific entries are there.

Thanks to Ravindra Singh Rathore, he helps me in this as well.

Happy Coding :)

 

 

Multiple datasource locations to Single Sublayout or Rendering in #Sitecore

Hello All,

In one of our project I faced a requirement to give multiple Datasource location to single Rendering, so that they can select whatever datasource they need. After doing some research I found that it is possible to give multiple datasource. For this first of all Login to your Sitecore.

Let’s say you have a #Sitecore structure like this -

Sitecore

-Content

-Site Node

-Globals

-Datasource Folder

-Home

-_Resource

-Datasource Folder

-Item 1

-_Resource

-Datasource Folder

 

Now we need to set 2 Datasource Locations for single Rendering. For this follow the below steps-

1)      Go to particular rendering where you want to set datasource

2)      Let’s say go to

-sitecore

-content

-Layout

-Renderings

-Your Rendering

3)      Click on “Your Rendering”

4)      Then in right hand side go to “Editor Options”

5)      Firstly, go to “Datasource Template” field.

Click on “Insert Link”, a pop up will open, in which you need to select “Datasource Folder Template”

DataourceLocationPE

 

6)      In “Editor Options” go to “Datasource Location” field

7)      Then in the “Datasource Location” write this query –

. /_Resource|query:./ancestor-or-self::*[@@templatename=Site Node Template Name'] /*[@@templatename='Globals Folder Template Name']/*[@@templatename=Datasource Template']

DatasourceLocationPE

What does this query means –

1)      This query is divided by pipe sign (|)

2)      In which “_Resource” is the first datasource location (Left part of pipe sign (|)), that is let’s say we want to give datasource to “Home” item’s rendering. So first you can see there is “_Resource” folder directly under “Home” item, so it is the path of that “_Resource” folder

3)       Now we have 2nd datasource location (Right part of pipe sign (|)), that is a query. In this query you need to set “Template Names”. Let’s say you want to set 2nd location to “Datasource Folder” that is under “Globals” Folder. So all you need to do is to set “Template Name” starting from your “Site Node” to that “Globals Folder Template”, don’t include datasource folder template in this. If your datasource is under any other node under Globals folder, then need to set template names just above your datasource folder.

For ex – Your sitecore tree is like – sitecore/content/sitenode/globals/datasource folder, so set template names starting from sitenode template to globals folder.

4)      Here it is all. Now go to “Home” item.

5)      Click on “Presentation” tab.

6)      In that click on “Details”.

7)      A pop up will open in which click on “Your Rendering”

8)      Then in the “General” tab, go to “Data Source” field and click on “Browse”, now you can see there are 2 datasource location, in which you can select datasource from either Globals Folder’s Datasource or _Resource Folder’s Datasource.

Datasource_Location

Happy Coding :)

RTE Snippet

RTE snippet is used when you have to write same html again and again or have some content that look the same but maybe with difference in text in RTE, you should consider making a snippet.

You need to follow some steps for creating RTE Snippet –

1) Switch to core database

At the bottok2m right of your screen there is a database icon, click this to open the context menu and select core.

ChangeDB

2) Go to Snippet under settings node

Once switched to core database browse the following node

(sitecore/system/settings/Html Editor Profiles/Rich Text Default/Snippets)

5424496037_f7f34fd7ac_b

3) Insert a new snippet

You can either duplicate a snippet that already exists or add a new one.

To add a new snippet right click to Snippet folder

5425096460_14e282d12b

And create a snippet using the following template:
/sitecore/templates/System/Html Editor Profiles/Html Editor Snippet

5425096528_a2c4cc0294_z

This template consists of two fields, a header field and a value field.

a) In the header field you can write the name that is the title of snippet.

b) In the value field you input the html that should be pasted into the html field when the editor chooses the snippet.
CoreDbSnippet

Snippet is created now, now you can use it. Don’t forget to switch to master database.

How to use Snippet –

Go to the item that has Rich Text Editor (RTE) type field. Then click to “Show Editor”.

When you press the “Insert Code Snippet” button you will see the new snippet that you have just created. Then you can use it by clicking that snippet.

EditorSnippets

WFFM custom save action not woking on CD environment

We configured CM/CD environment for a website. When using Web Forms for Marketers in a CD environment, We faced an issue on custom save action, It was not working, it did not log any error in sitecore logs and it goes to next action like redirect and success page. 

There is a simple and easy way to resolve this issue, on WFFM custom save actions we need to mark checked on “Client Action” option.

ClientAction

 

 

 

 

Sitecore upgrade recommendations and best practices

If you are planning to upgrade your Sitecore to latest version, there are a few different ways of doing it. But be careful. Sitecore upgrades aren’t always straightforward.

Sitecore upgrade could introduce many problems if it’s done without planning. Here I will talk about recommendations and best practices to follow-up while doing upgrade

There are two upgrade approaches mentioned below–

  • Install of 8.X and migration of content
  • Incremental upgrades as per Sitecore’s documentation

Lets talk about each approach in detail

Install of 8.X and migration of content

o   In this approach we can move content (content items and media library) from old Sitecore installation to new fresh Sitecore installation via Sitecore packages. It’s a quick upgrade approach for small websites but it’s not the recommended approach.

o   Pros

  • Quick upgrade process for small websites

o   Cons

  • Not supported by Sitecore
  • Migrating content to a new solution can be a bit risky since the moved items are not updated and new versions of the UpdateInstallationWizard performs some post installation steps which fixes some field values on standard fields
  • Migrating Sitecore users to new solution reset their password. Admin has to resent password to all the users
  • Migrating content to new solution does not work well for larger projects, it’s become time consuming as compare with installing the upgrade packages

Incremental upgrade

If you are upgrading from 6.6 to 8.1, for example, this approach requires a series of intermediate steps of installing packages, updating configuration files and running update scripts on the databases

o   Pros

  • Supported by Sitecore
  • No need to worry about package installation and user migration
  • Give opportunity to migrate analytics database
  • Opportunity to upgrade Sitecore modules like WFFM and ECM without losing data

o   Cons

  • With this approach we have to run upgrade two time first during development and second before prod release with content freeze
  • Content freeze time in this upgrade is bit longer than earlier

Steps to do Sitecore Incremental upgrade

We normally divide upgrade process in eight steps

  1. Analysis and Planning
    1. What is initial and target Sitecore version
    2. How many Sitecore modules are installed in current Sitecore version
      • i.      Do these modules support target Sitecore version? Check Sitecore modules compatibility by clicking here (https://kb.sitecore.net/articles/541788)
      • For Sitecore modules such as Email Campaign Manager, Web Forms for Marketers, or the CRM connector, be aware that each module has its own upgrade path and compatibility timeline
    3.  Is there any Sitecore customizing done in Sitecore that will not be available in target version
    4.  Does current infrastructure support target Sitecore version
    5. Customers should check with their Sitecore sales rep to ensure that an upgrade to version 7.5 or 8 is fully supported by their current Sitecore license.
  2. Run Sitecore Upgrade
    • Setup project on local development machine (codebase and database)
    • Depending on initial Sitecore version start upgrade process
    • Take backup of complete code and database after upgrading to next Sitecore version
    • Make sure to upgrade Sitecore supported modules as well
    • Once upgrade reach to target version. Login to Sitecore and perform below steps –
      • Publish an item
      • Try to change presentation of item
      • Create item
      • Delete an item
  3. Internal Testing
    • Setup dev site
    • QA will do smoke testing of website and record and error found. Common error after upgrading from version to 6 to 7 is
      • The major API change between 6 and 7 is Sitecore.Search. This can be a big task depending on project size and lucene usage
      • If there are some modules installed which are not supported by Sitecore then update their code to support new API
      • If there any customization in Sitecore using OLD API that may not work in new version
  4. Bug fixing
    • Fix the issues raised by QA
  5. Alpha Testing
    • QA will run one more round of testing and validate issues raised during internal testing
  6. Beta Testing
    • Setup UAT environment so that client can validate website
  7. Preparation for Prod release
    • This is content freeze and code freeze step. From the start of this step till prod release client’s content team is not allow to make any update on content tree
    • Take latest database backups from production server and restore it on local development machine
    • Run upgrade again from initial Sitecore version
    • To save some time and avoid any human error we can do below
      • Install the Sitecore recommended upgrade packages and run the sql scripts.
      • For config updates don’t do it again instead copy all the configs from back that was created during initial upgrade for specific Sitecore version. Manually updating config files consumes lots of time and increase chances of error because of human mistake.
    • Merge any code update to UAT (if client IT team is doing it)
      • i. Make sure client IT team is not doing any major code update using initial version Sitecore API
    • Smoke testing of website by QA
    • Client can validate website and latest content
  8. Prod Release

Reset sitecore admin password

Most easy way to reset sitecore/admin password to b is just run following script on core database.

UPDATE [aspnet_Membership] SET Password='8dC23rEIsvuttG3Np1L4hJmJAOA=', PasswordSalt='joeLPwcwMq6L7kyuVfVS7g==' WHERE UserId IN (SELECT UserId FROM [aspnet_Users] WHERE UserName = 'sitecore\Admin')

If your admin user name is different then Admin just update the “sitecore\Admin” in the above script with your admin user name.

Good read on this topic - http://www.sitecoredevelopment.com/MarkGraber/2010/June/Cannot-Login-to-Sitecore.aspx

Thanks and cheers