Surendra Sharma

Surendra Sharma

Search This Blog

Monday, July 10, 2017

Fix : 'Lucene.Net.Index.MergePolicy.MergeException' occurred in Lucene.Net.dll


If you are using Lucene search in your Sitecore project, you may receive Visual Studio Just-In-Time Debugger window which ask you for debugging.

When you debug you may encountered that there is an exception 'Lucene.Net.Index.MergePolicy.MergeException' in Lucene.Net.dll.

What does 'Lucene.Net.Index.MergePolicy.MergeException' mean?

This issue is related with your current Sitecore indexing and current indexes are not in well format. This typically happen when you copy full website from one developer machine to another. Indexes on new developer machine will not be in sync with its Sitecore instance.

How to fix it?

Simply delete all directories and files from "Data\indexes" folder and regenerate indexes from Sitecore Control Panel. 

I hope you like this Sitecore tip. Stay tuned for more Sitecore related tips.

Till that happy Sitecoring :)

Please leave your comments or share this tip if it’s useful for you.

Friday, July 7, 2017

Resolved Sitecore WFFM error : Redirect item is null




If you are using Sitecore WFFM then you may encounter this WFFM error "Redirect item is null" on your browser. 

It indicate that on WFFM Submit button, you had set Success page to an item which either does not exists or not published. 

WFFM success action
WFFM success action


To fix that try to point your success page to some another item or just show the Success Message.

I hope you like this Sitecore tip. Stay tuned for more Sitecore related tips.

Till that happy Sitecoring :)

Please leave your comments or share this tip if it’s useful for you.

Thursday, July 6, 2017

How to remove validation summary messages from Sitecore WFFM Form

There are no ways from Sitecore desktop to control WFFM form validation messages.
 
Currently Sitecore showing all the messages at top of the form as 

WFFM Validation Summary Messages
WFFM Validation Summary Messages

However if you don't want to show these summary messages, then open file “Website\Views\Form\EditorTemplates\FormViewModel.cshtml” and locate below section

<div class="has-error has-feedback">
    @Html.BootstrapValidationSammary(false)
</div>
           
Either comment this section or simply add style to display none as  
 
<div class="has-error has-feedback" style="display: none;">
    @Html.BootstrapValidationSammary(false)
</div>

That’s it. Now all the validations summary no longer visible to end user.

WFFM form without Validation Summary Messages
WFFM form without Validation Summary Messages

I hope you like this Sitecore tip. Stay tuned for more Sitecore related tips.

Till that happy Sitecoring :)

Please leave your comments or share this tip if it’s useful for you.

Wednesday, July 5, 2017

How to integrate any unfamiliar legacy system to Sitecore

Integrating legacy systems with Sitecore
Integrating legacy systems with Sitecore


Days are gone when one system was handling entire organization system. Nowadays you have to integrate multiple systems to your solution.

There are some legacy system which are running and working fine in many organizations, but they don’t have 

  • Code of existing system
  • No DEV team
  • Don’t have any document
However what they have?
  • Business user who know what exactly this system do
  • Front end Windows/web Application
  • Backend database
Your job is integrate this with your new solution. In our case, integrate it with Sitecore.

Let’s take an example of Order system as a part of legacy system and find out different helpful pointers to integrate this successfully.
  • Decide what exactly you have to integrate? Typically we don’t need to integrate entire legacy system however a part or module of this system need to integrate.
  • Ask business user to give demo of that module to understand how its working and what exactly it achieve?
  • Note the different control’s labels and heading text on front end.
  • We can’t change forms of windows application EXE without code, however all details of legacy system generally stored in database. So we entirely depend on database.
  • We need to understand the database structure of legacy system and find out tables where this system storing data? Big question is how to identify that?
  • Check the connection string of this system to get the database name and credentials.
  • Open this database and create database diagram to understand tables relationships.
  • Create excel file
               o    Store all table names of this database in one tab.
               o    Store all tables with their all columns name in second tab.
  • Find out only those tables which are related with this module. This is very crucial stage. How will you get to know which tables are used for storing data?
  • Generally table names reflect front end functionality. So if you understand front end functionality, you can guess or identify table names.
  • Some legacy system keep their tables names with numeric code like T89673, R6556757 etc. In this case our previous idea will not work. So what will you do now?
  • Refer labels and heading of front end screen controls and try to find out the similar name as columns name from our excel sheet. Note down all the tables where you will get these label names.
  • One more concrete way to find exact tables and column name is that enter and save some test data from front end and find out that data in all tables of that database. You can google such SQL script to find any particular word in all tables.
  • Use SQL server trace functionality to find out what exact queries are fired on SQL server when you click on SAVE button in front end. All these queries give you good insight of all referred tables for that functionality.
  • If you have EXE or DLL of the legacy system, use tool “ILSpy.exe” for reverse engineering and get the code of legacy system. Find out the data logic sections and get all referred tables, columns, queries and stored procedure in code.
  • Till this point you should get all the required tables and columns names. Now find our relationship among all these tables.
  • Most important is to find out the sequence of tables in which details are going to save.
  • You should fire some SAVE operations from front end to understand how his data is saving in tables and what its order.
  • Write some insert queries with sample data and check that if you are getting that data in front end as a valid record or not.
  • If not, then examine data again and check what data is missing? In this situation try to compare data saved from front end and data that you are inserting from INSERT queries and make adjustment in your insert queries.
  • If yes, then write a stored procedure to insert all the data in one go.
  • Write API at Sitecore side to send/receive required details to legacy system.
  • Create console application and schedule it to send / receive data from Sitecore.
  • Test end-to-end to send and receive data from and to legacy system and Sitecore side.

By following these steps you can integrate any legacy or unfamiliar system to your application.

I hope you like this article. Stay tuned for more related articles.

Please leave your comments or share this article if it’s useful for you.