torsdag 16 mars 2017

Install Reporting Services on another machine than the SQL Server

We have faced the question of using an SQL hotel for CRM purposes a couple of times. One problem you could be facing is that the SQL server is hosting several different CRM environments so you needed to install the CRM on a named instance, which of course is possible even with a single installation. Since the SQL server might be hosting several CRMs you needed to install the SQL Server Reporting Services on a different machine.

The Reporting Services doesn't need to be installed on the same machine that is hosting the SQL server and this is a feature that you might be interested in when you are hosting several CRM deployments on the same SQL server. It is possible to host different CRM servers on a single SQL server, although on separate instances of the SQL server, and you can also have separate instances of Reporting Services on that SQL.

The issue is that for the CRM installation you have a component called the Reporting Services Connector that you need to install on the server running the Reporting Services of the CRM system. This software can only handle one CRM server and can only be installed once on a server which means that you can only host one CRM server with a Reporting Services installation so even though you can host multiple CRM servers on one SQL server, you still need one Reporting Services installation per CRM server.
You can install the Reporting Services server on one of the servers used for CRM if you need to minimize the number of servers involved, if you do this you need to think about how your reporting is used because if you do a lot of reporting that server might be loaded and might make the system less responsive for the users.

One thing that's good to know is is that you can't run the reporting sevices service with an account that is used for the CRM installation, i.e. the same account as you're running Asynchronous service with. It is a good thing to have separate accounts for every part of the CRM system, but in this case you are not allowed to use the same account because things won't work.

To install the Reporting Services server on a different machine could also be interesting if you're doing a lot of reporting and you find that the SQL server isn't coping with the load, or you'd like to split them because you'd like to have a lot of power on your SQL server for different reasons but you also want that power to be available for database handling rather than reporting.

Rickard Norström
Developer at CRM-Konsulterna
www.crmkonsulterna.se 
I’m currently building an integration plugin for a customer that uses an online ERP system that has a REST interface to communicate with the system. To use the REST endpoint in an easier way the company has provided me with a couple of connection DLLs.

This is the first time I’m using external DLLs in a plugin for an online deployment, I’ve previously only done that on premise, and it’s a couple of years ago, so this meant that I’m facing some new challenges.
The first issue is that I can’t just place stuff in the assembly folder and look happy, since it’s online everything needs to be located in the database, and well you can't just put some dlls there so ILMerge is needed to create one dll. At first I was a but curious how the sandbox in Dynamics 365 would react to the external calls that I was going to make but I really didn’t think it would be an issue, and that was a correct assumption, no problems making the calls from the sandbox, one issue out.

The next thing I thought was my salvation is that I’m able to do some testing on an on-premise Dynamics 365 and just setting the plugin to run in the sandbox. This was one issue I didn’t expect. When I ran my code in the sandbox on our server, it was working just fine but when I registered the assembly in Dynamics 365 online I got in trouble, and it’s not really amusing to troubleshoot plugins online. This one was even worse since it was five or so dlls that I had merged using ILMerge, which also was a source of concern. This proved not to be an issue, the dll that was the output from ILMerge was working as planned.

I got a bit of help by George Doubinski  and the issue was that the code I was using implicit typed variables. The reason for this is that I got code examples from the ERP provider. Don’t get me wrong here, I’m not blaming them for that, it just that I’m coming from hardware where everything is explicitly typed so my code is generally explicit typed even though the best practice for C# is to use implicit typed variables. This time however I let it be as the example code was written and since that worked in a sandboxed on-prem I didn’t really think about it.

I’m not sure what it is that makes the dynamic and var problematic here but it was very clear that in this case it did not work online.

The moral of this is that even though you have code that’s working in a sandboxed on-premise installation it might not work in an online deployment. If that happens it might be worth it to start looking at what variable types you’re using. To merge dlls together with ILmerge is working very good though, which is good.
 
Rickard Norström
Developer at CRM-Konsulterna
www.crmkonsulterna.se 

torsdag 2 februari 2017

Reporting Services, reports, reporting extension Visual Studio and headache

I was involved in a discussion about report creation in the Microsoft Dynamics CRM group on Facebook the other day where started digging in how to use Visual Studio 2015 for reporting since Jonas Rapp asked about that. He thought it was silly that his devolpment team had to have both VS 2015 and 2012 to be able to work, 2015 for general coding and 2012 for reports.

Now, I have always been using the Data Tools, which has been knows as BIDS (Business Intelligence Development Studio) when I've been doing the reports since most of my report building has been on premise and I need the database to be able to work anyway so I've been doing the job on the SQL server where the BIDS has been installed, or at least after I request it to be installed if it's not our environment.
Since I've been fiddling a bit with SSIS I know it's possible to download the Data Tools for VS 2015, that's the same tool you're using for SSIS and reports so I had a quick look at the Data Tools download https://msdn.microsoft.com/en-us/mt186501.aspx which was all fine and dandy. It worked very good to open a reporting solution and move stuff around. All good.

Now, what I didn't think about was that you might like to do online reports which require the Reporting Extensions. As I said earlier, I haven't done much reporting for online since the customers we've been working with that wants reports have been on premise. Anyway, reporting extension it is and that's available here https://technet.microsoft.com/en-us/library/hh699754.aspx#report_auth_gen_req for Dynamics 365 and on that very page the pre reqs state that it should work with VS 2013 and 2015 however the comments at the bottom pretty clearly says that it doesn't work.

Next thing. As I had installed the Data Tools for VS 2015 I started using them, big mistake. I altered a report for a CRM 2016 update 1 (might be called spring release, I don't know, but it is version 8.1 on premise) and uploaded it to the CRM server. That did not end well and there was a ton of errors saying very odd things which I just didn't care about at the moment, might come back to that later. Thank god for version control, go back to previous version, make the same changes in the SQL Server Data Tool (some VS 2013 shell methink) and upload it again, this time with better results.

The moral is the following, don't use bleeding edge Visual Studio for reporting, unfortunately, specially since it should be working according to the MS pages.

Hope someone gets less headache from this.

Rickard Norström
Developer at CRM-Konsulterna
www.crmkonsulterna.se 

tisdag 24 januari 2017

Dynamics 365 On Premise (also known as CRM 8.2) licensing

I just had a bit of an eye opener regarding the winter update for CRM 2016 which made it  Dynamics 365. This is a new license model and a new license which is needed to run the server and for CALs for all the users.

That may not be that much of an issue if it wasn't for the upgrade engine. Previously when the new major versions were released there was a new server installation, or an in-place upgrade using some sort of install media. This is not true for the winter update, so if you haven't got it already be careful.
By, "haven't got it already" I mean that since it is distributed as an update, previously known as an update rollup, you will get it installed automatically if you have the "install updates automatically" setting set and then you will have a software which you may not be licensed with.

This is rather late for this but say you have a server which is more or less connected to the internet you may not already have got the update, or if you are manually installing upgrades using Windows Update, untick the CRM upgrade if you don't have a license.

The licensing guide can be found here and the KB for Dynamics 365 update is found here

Rickard Norström
Developer at CRM-Konsulterna
www.crmkonsulterna.se