Service Unavailable (HTTP Error 503) Server Error in ‘/lus’ Application–Dynamics GP

Recently user home pages have been showing a few different error messages under the “connect widget” area of the home page. The connect widget is considered by some as a waste of bandwidth and is disabled for all users, to others it is a useful source feed of news and information about Dynamics GP.

Service Unavailable, HTTP Error 503. The service is unavailable.

The content that is shown on the user home pages within the “connect” area is populated by Dynamics GP polling a Microsoft server over the internet to fetch the content with a web request. If the server that Dynamics GP is contacting to obtain that home page content is misconfigured, or is experiencing stability issues, then a number of error messages can be handed back to GP and shown to the user. This results in an error, rather than the intended content being seen, that in turn may lead to support calls from users.

Dynamics GP Service Unavailable HTTP 503 error

A more severe version of this is when the user home page area for connect says

Server Error in ‘/lus’ Application

This is the ASP.NET application (lus) that is running on Microsoft’s IIS server throwing an error. This is the ASP.NET application that is responsible for serving the Dynamics GP homepage connect content.  So this is a problem that Microsoft would need to resolve with their application on their server. The homepage makes a web request to a url behind the scenes of GP, along the following lines to fetch the content:

https://online.dynamics.com/lus/? – see the lus on the end of the uri? - this is the application name.

Server Error in /lus Application Dynamics GP homepage

There are also reports of this error problem from malformed urls that are caused by unusual characters in the company name of the Dynamics GP company (e.g. angle braces on <test> company instance names), where those characters are not correctly encoded by GP when the web request is made. The following posts have information on this issue:

Home Screen Connect Error – Server Error in ‘/lus’ Application.’

Server Error in /lus Application Error on Home Screen

I have not seen the character issue on GP2015 with the test company. Generally the errors have not persisted in the cases I have seen for more than a few hours, when presumably someone at Microsoft addresses and fixes the issue.

Jan 2018 update

Two new messages in the Dynamics GP Connect window for this month. The message Dynamics GP is giving is

Can’t reach this page

that is then followed by

Can’t connect securely to this page

when you click “refresh”.

This content area is showing a webpage from Microsoft, the page is served over https: however it looks like there is no SSL certificate bound to the web server site, causing an error page rather than the content to be displayed on the GP client.

Dynamics GP - Can't reach this page

Dynamics GP - Can't connect securely to this page

Dynamics GP Connect “Navigation to the webpage was cancelled”

Jan 19th 2018 Update

It seems the long running issues with the connect page continue with a new variation of

Navigation to the webpage was cancelled

Update 24th January 2018

The word from Microsoft is:

The servers for Connect are still being worked on and until that is completed, Connect on the GP home page will work sporadically, if at all.

Recovering a deleted Reporting Services Report

Yes, I deleted the wrong report while housekeeping. This raised the question as to how to recover it once it has been deleted? There is no recycle bin to or undelete option in reporting services on the version I work with and at the time of writing (Nov 2017).

It turns out to be very simple and quick to restore, if you have backups of your “ReportServer” database, which of course every one has.

Option 1 – Restore to point in time

The simplest way is to restore the “ReportServer” database from backup, to a point in time just before the deletion, but this would loose any changes on the report server made since it was deleted. In my case I had spent a few hours after deleting the report with housekeeping all all kinds of things on the report server, so this was not desirable as I’d loose that work.

Option 2 – Restore the single report from backup

Slightly more involved as an option, but still quick and easy, follow the steps below, it only takes a few minutes to do.

To restore the “ReportServer” database

    • Right click the database in SSMS, select restore
    • Rename the Destination Database to ReportServerRestored
    • Use the check boxes to find the point in time to restore to, here I chose to not apply the logs to make for a speedy restore
    • Click Files on page selector in left hand side. If the default path is not appropriate (under Restore As, in the grid, you may need to scroll left to see), then change the path that the database files will be restored to
    • Click options on page selector in left hand side to select options. Unselect Take tail-log backup.
    • Click ok to start the restore

2017-11-02_12-07-37

Extract the XML that represents the report from the restored database

Reports are stored in a binary field in a table in the database as XML. The following article explains how to get at the XML that defines the reports,

 Extracting SSRS Report RDL (XML) from the ReportServer database

Using the information in this article we can get to the report we need by running the script in SSMS.

--The first CTE gets the content as a varbinary(max)
--as well as the other important columns for all reports,
--data sources and shared datasets.
WITH ItemContentBinaries AS
(
SELECT
ItemID,Name,[Type]
,CASE Type
WHEN 2 THEN 'Report'
WHEN 5 THEN 'Data Source'
WHEN 7 THEN 'Report Part'
WHEN 8 THEN 'Shared Dataset'
ELSE 'Other'
END AS TypeDescription
,CONVERT(varbinary(max),Content) AS Content
FROM ReportServerRestored.dbo.Catalog
WHERE Type IN (2,5,7,8)
),
--The second CTE strips off the BOM if it exists...
ItemContentNoBOM AS
(
SELECT
ItemID,Name,[Type],TypeDescription
,CASE
WHEN LEFT(Content,3) = 0xEFBBBF
THEN CONVERT(varbinary(max),SUBSTRING(Content,4,LEN(Content)))
ELSE
Content
END AS Content
FROM ItemContentBinaries
)
--The outer query gets the content in its varbinary, varchar and xml representations...
SELECT
ItemID,Name,[Type],TypeDescription
,Content --varbinary
,CONVERT(varchar(max),Content) AS ContentVarchar --varchar
,CONVERT(xml,Content) AS ContentXML --xml

FROM ItemContentNoBOM
where name like '%{enter part of report name here}%'

Note you need to edit the {enter par of report name here} to be what it says, you will then be presented with the row(s) of interest. Work out which is the report you need if multiple rows are returned (note the restored database name is embedded into the SQL, change if you restored to another name).

 2017-11-02_12-35-35

On the row, example shown above, click the hyperlink of the column “ContentXML” to open the XML in an XML editor within SSMS (cool feature). Then go to File>>Save As.. within SSMS to save to a drive for later import to the report server.

Rename the xml file

Rename the xml file as a .rdl file you can make the filename an appropriate descriptive name for the report as this will later show in the report server

Upload the report definition file to the server

Upload the .rdl file to the reports folder on the reporting services server. Navigate to the folder it should reside in and select “Upload File” as shown below

2017-11-02_12-22-29

Recreate subscriptions and schedules

You will have to manually set up subscription schedules again for the report if they existed before.

Delete the restored database

From SSMS right click the database name and select delete to remove it. Check that the database files are also deleted on the server.

 

The report is now restored and the task is completed!

If you found this useful please comment, it helps motivate me to keep adding to the blog…