In-place upgrade from 2015 on-prem to 2016 on-prem

Question Status

Verified
Allison Walters asked a question on 11 Dec 2015 3:23 PM

I'm trying to upgrade a 2015 on-prem installation to 2016.  I'm using the same admin account to install as when I installed originally, same service accounts specified, etc...

When I get to the "System Checks" page, it checks off Operating System and Server User Input, and then moves onto CRM Database, where it just sits and does not progress.  When I look in the logs, I can see it going through the Database check section, and the final lines are:

---------------------
13:24:09|Warning| Check SqlDefaultValueConstraintValidator : Warning: The default value constraints in the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM default value constraints.
13:24:09|Verbose| Connecting to database Data Source=DBSVR01\DYNMSCRM;Initial Catalog=CAWST_MSCRM;Integrated Security=SSPI.

---------------------

And this is where it's just sitting.  Server isn't crashed, no non-responding processes....just, nothing's happening.  (Note: there are a few other db checks that happen before this, and it gets past those just fine.)

So I tried just upgrading the server without upgrading the org, and that worked fine.  Then in the Deployment Manager I try just upgrading the org, and it hangs again.  The crmdmsnapin log shows the exact same final lines as above before it just stops proceeding.

This org was created in CRM 2015, so not some old version that's been updated over and over, or anything like that.  And we haven't touched the DB directly or done anything out of the ordinary with the organization or its config.

Any ideas as to what I can try next, or where else to look?  Out of curiosity, has anyone done this successfully yet?

Reply
Edward Ainsworth responded on 20 Jan 2016 10:13 AM

Hi David, I am very reluctant to attempt to simplify this, as there is potential for irreparable damage if you are not familiar with SQL Server.  If you have a DBA or consultant who is proficient in MSSQL, they should be able to follow the above without any issues.

Reply
Suggested Answer
David Finley responded on 20 Jan 2016 5:36 PM

Thanks for getting back to us Edward. We understand your apprehension here. Would you mind looking over this blog post we have created to help others, and commenting if this is achieving what you intended.

http://www.interactivewebs.com/blog/index.php/crm/crm-2016-import-upgrade-from-crm-2015-failure-timeout-expired/

Thanks in advance. 

Reply
Edward Ainsworth responded on 20 Jan 2016 6:01 PM

That looks about right.  For step #8, I probably just hit ok.  The generate scripts functions on that dialog didn't do what I was expecting, so I can't comment on that particular action.

Reply
David Finley responded on 20 Jan 2016 11:14 PM

Thanks for the comments. We will update the blog... essentially both actions should be doing the same things. Ours is just showing our age.

I cannot believe that MS has released a version with such an obvious failure like this. I thought it was bad enough that the past two releases would not run install applications from their ISO splash screens. At least they have fixed that after 4 years...  but this really should have been patched within days of such an embarrassing untested failure.

For anyone reading... we have found some strange behaviour with the permissions on the SQL databases for CRM and the SQL Report Server. Same environment that works in CRM 2015 fails to assign permissions correctly with the Service account in CRM 2016.

Anyway I'm sure there will be a lot more. We were expecting this to be a rebadged point release to CRM 2015. Being that the on Prem never had the 1.0 menu fix that is necessary to give CRM to clients. So we rushed into CRM 2016 expecting it all to work... but now we are back to our normal Microsoft Rules.... "No customers until SP 1 is released on any Microsoft Product". Shame!

Rant over!

Reply
Suggested Answer
Mike Van Meerten responded on 10 Feb 2016 5:00 PM

Thank you for posting this thread.  It helped me solve this timeout issue and upgrading on-prem 2015 to 2016

Reply
Suggested Answer
Lina Baumberger responded on 23 Feb 2016 7:01 PM

CRM 2016 Update 1 was released this week and fixed the import organization system check timeout issue for our 2015 to 2016 upgrade (along with quite a few other things, see KB 3133963 link below).

Download: www.microsoft.com/.../details.aspx

Issues Resolved: support.microsoft.com/.../3133963

Reply
Suggested Answer
Mike Van Meerten responded on 2 Mar 2016 1:20 PM

This worked.

Upgrade 2016 first apply 0.1 update, import ORG

Reply
David Finley responded on 4 Jul 2016 11:31 AM

We found some more problems here. After installing Rollup 1 for CRM 2016 we found that we could not run the update to our database. The issue appears to be related to the indexes. We dropped them again as per this article, and found the update ran. Problem is this.

If Full text indexing is disabled, inline search works ok.

If full text indexing is enabled, then the inline search and related search fails with SQL error.

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Xml.XmlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #E7A7EDE9Detail:
<OrganizationServiceFault xmlns:i="www.w3.org/.../XMLSchema-instance" xmlns="schemas.microsoft.com/.../Contracts">
<ErrorCode>-2147220970</ErrorCode>
<ErrorDetails xmlns:d2p1="schemas.datacontract.org/.../System.Collections.Generic" />
<Message>System.Xml.XmlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #E7A7EDE9</Message>
<Timestamp>2016-07-04T15:54:06.7174036Z</Timestamp>
<InnerFault>
<ErrorCode>-2147204784</ErrorCode>
<ErrorDetails xmlns:d3p1="schemas.datacontract.org/.../System.Collections.Generic" />
<Message>Generic SQL error.</Message>
<Timestamp>2016-07-04T15:54:06.7174036Z</Timestamp>
<InnerFault i:nil="true" />
<TraceText i:nil="true" />
</InnerFault>
<TraceText i:nil="true" />
</OrganizationServiceFault>

Anyone got any hints. 

We tried turning off full text, and removing the existing index, then rebooking and re-indexing. Same failure.

Reply
SteinJM responded on 7 Jul 2016 8:08 AM

Thanks for this thread!

We had the same issue with timeout during the System Check stage when trying to upgrade from 2015 to 2016.

We solved this by disable the Full-search for Quick find on CRM2105 before we did the upgrade.

(Now what is left, is to update to 2016 Update 1 so we can turn this back on...)

Ref:

community.dynamics.com/.../upgrade-crm2015-to-crm2016-timeout-error-during-the-upgrade

Reply
David Finley responded on 15 Jul 2016 11:25 AM

After quite a bit of messing around, we ended up requesting support from Microsoft on this issue.

The outcome and solution that we utilised was actually quite simple. The details of which can be found here: http://www.interactivewebs.com/blog/index.php/crm/microsoft-crm-global-search-fails-causing-in-line-search-sql-error/

 although during the upgrade process we messed around quite a bit with the indexing system, it would appear that all of the problems associated with the global search and in-line search functions failing was all associated with the defragmentation problem of the indexes. I am only a part SQL Server expert, and cannot be exactly sure why the maintenance procedure that is run on the databases that I thought included defragmentation and rebuilding of indexes where necessary would have fixed this problem. But apparently not as the solution described in the above blog post did fix a problem.

Hope this is helpful to somebody else, as it had a stump for quite a while.

Reply
Verified Answer
Steffen Risser responded on 16 Dec 2015 8:07 PM

Having the same problem, I discovered the following TSQL using the SQL Activity Monitor:

while (@@FETCH_STATUS <> -1)

begin

if (@TableName = 'DocumentIndex')

begin

   set @columnCount = @columnCount + 1     

   if( @FullTextColumnName COLLATE Latin1_General_CI_AI not in ('Title', 'KeyWords', 'SearchText'))

   begin

  set @modifiedFTIndex = 1

   end

   fetch next from @mycursor into @TableOwner, @TableId, @TableName, @FullTextColumnName, @FullTextColID, @FullTextBlobColumnName, @FullTextBlobColumnId, @FullTextLanguage

end

 

if (@TableName = 'BusinessDataLocalizedLabelBase')

begin

   set @businesDataLocalizedLabelColumnCount = @businesDataLocalizedLabelColumnCount + 1     

   if( @FullTextColumnName  COLLATE Latin1_General_CI_AI not in ('Label'))

   begin

  set @modifiedBusinessDataTableFTIndex = 1

   end

   fetch next from @mycursor into @TableOwner, @TableId, @TableName, @FullTextColumnName, @FullTextColID, @FullTextBlobColumnName, @FullTextBlobColumnId, @FullTextLanguage

end

end

To get the TSQL statement, I used the following query, where 65 is the session I found using the activity monitor

 

SELECT sqltext.TEXT

FROM sys.dm_exec_requests req

CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext  where req.session_id = 65

 

For me the statement would never complete, because my CRMFulltextCatalog also contains other columns. It looks like the problem is the “fetch next from @mycursor …” which won’t be called for columns other than 'DocumentIndex' or 'BusinessDataLocalizedLabelBase'. So this is where the endless loop is coming from.

Therefore I removed all other columns from my CRMFulltextCatalog except 'DocumentIndex' and 'BusinessDataLocalizedLabelBase'.

 

Finally the system checks went through and I was able to perform the upgrade!

 

Reply
Verified Answer
Edward Ainsworth responded on 20 Dec 2015 8:38 AM

Thank you everyone in this thread for pointing me in the right direction.  Not sure if this will help anyone else, but I wrote a little script to regenerate the CRMFullTextCatalog.  I ran this script before upgrading, then manually removed all tables/views from the Catalog.  After the upgrade was complete, I ran the output generated by this script, which re-populates all the tables/view back into the CRMFullTextCatalog, putting it into the pre-upgrade state (keep in mind that the index must rebuild after running the script).  I make no guarantees this will work in your environment, but it appears to have worked properly for our test migration.

declare @catid int

select @catid=fulltext_catalog_id from sys.fulltext_catalogs where name='CRMFullTextCatalog'

declare c cursor for

select sys.tables.name, sys.fulltext_indexes.unique_index_id from sys.fulltext_indexes inner join sys.tables on sys.fulltext_indexes.object_id = sys.tables.object_id where sys.fulltext_indexes.fulltext_catalog_id=@catid

open c

declare @TableName varchar(200), @UniqueID as integer

fetch next from c into @TableName, @UniqueID

while @@fetch_status = 0

begin

declare d cursor for

select sys.indexes.name, sys.tables.object_id from sys.tables inner join sys.indexes on sys.tables.object_id = sys.indexes.object_id where sys.tables.name=@TableName and sys.indexes.index_id = @UniqueID

open d

declare @KeyIndex varchar(200), @object_id as integer

fetch next from d into @KeyIndex, @object_id

if @@FETCH_STATUS <> 0

begin

Print 'Error with' + @TableName

end

while @@fetch_status = 0

begin

BEGIN TRY

Print 'CREATE FULLTEXT INDEX ON [dbo].'+@TableName+' KEY INDEX ['+@KeyIndex+'] on([CRMFullTextCatalog]) WITH (CHANGE_TRACKING AUTO)'

Print 'GO'

declare e cursor for

select sys.columns.name from sys.columns inner join sys.fulltext_index_columns on sys.columns.object_id=sys.fulltext_index_columns.object_id and sys.columns.column_id=sys.fulltext_index_columns.column_id where sys.columns.object_id=@object_id

open e

declare @ColumnName varchar(200)

fetch next from e into @ColumnName

while @@fetch_status = 0

begin

Print 'ALTER FULLTEXT INDEX ON [dbo].'+@TableName+' Add ('+@ColumnName+')'

Print 'GO'

fetch next from e into @ColumnName

end

close e

deallocate e

END TRY

BEGIN CATCH

print 'Error' + @KeyIndex

END CATCH

fetch next from d into @KeyIndex, @object_id

end

close d

deallocate d

fetch next from c into @TableName, @UniqueID

end

close c

deallocate c

Reply
Verified Answer
Matthias Baumhauer responded on 21 Dec 2015 11:00 AM

Edward,

Thanks for all the effort.

I basically got everything working now. I removed all columns prior to upgrade, upgraded. Then, the full text search was broken. I just disabled it, rebooted, and enabled it again in the general system settings.

It also took some time (hours), reboots, and second trigger of a aborted full text indexing job, but all is working now.

Reply
Suggested Answer
Branq0 responded on 30 Dec 2015 1:42 AM

Thank you for the effort as well. We got stuck in system chceck phase of installation, where checks of Microsoft dynamics CRM database took hours (after we modified timeouts in registry).

However, after removing tables from Fulltext catalogue, upgrade was no problem.

Reply
Suggested Answer
David Finley responded on 20 Jan 2016 5:36 PM

Thanks for getting back to us Edward. We understand your apprehension here. Would you mind looking over this blog post we have created to help others, and commenting if this is achieving what you intended.

http://www.interactivewebs.com/blog/index.php/crm/crm-2016-import-upgrade-from-crm-2015-failure-timeout-expired/

Thanks in advance. 

Reply
Suggested Answer
Mike Van Meerten responded on 10 Feb 2016 5:00 PM

Thank you for posting this thread.  It helped me solve this timeout issue and upgrading on-prem 2015 to 2016

Reply
Suggested Answer
Lina Baumberger responded on 23 Feb 2016 7:01 PM

CRM 2016 Update 1 was released this week and fixed the import organization system check timeout issue for our 2015 to 2016 upgrade (along with quite a few other things, see KB 3133963 link below).

Download: www.microsoft.com/.../details.aspx

Issues Resolved: support.microsoft.com/.../3133963

Reply
Suggested Answer
Mike Van Meerten responded on 2 Mar 2016 1:20 PM

This worked.

Upgrade 2016 first apply 0.1 update, import ORG

Reply