When moving data from a sandbox environment to your dev-box you need sqlpackage to unpack the bacpac file to a database. This could give you an error message stating that the file contains corrupted data:
To get yourself passed this you can download the .net core edition of the SQLPackage from here:
Unzip the downloaded file to a folder of your flavor. In that folder there’s another version of the sqlpackage.exe and that should allow you to continue:
This is something that I generally forget whenever I create a new dev-box. Visual Studio needs to be running as Administrator otherwise you’ll get messages such as “Access to the path ‘K:\AosService\PackagesLocalDirectory\Bin\InstalledVersion.json’ is denied”:
and “Visual Studio is not running as administrator. Finance and Operations (Dynamics 365) requires Visual Studio to be running as administrator. Please restart Visual Studio as administrator”:
You can always right-click on your VS-shortcut and select “Run as administrator”, but if you’re even remotely like me, you’ll forget that approx 82% of the times.
So what you need to do is to modify the shortcut you’re using. In my case I modify the shortcut in my Taskbar. Right click on the shortcut for Visual Studio and instead of clicking “Run as administrator” you click Properties:
In the properties window you click the Advanced button:
In the window that opens up tick the “Run as administrator”:
Click OK and OK and you’re done. Next time you use the shortcut it runs VS as administrator.
Some things were easier in the good old days before Dyn365 and Azure and some are better. Often the things that were better before tends to be things we need to relearn.
Allowing firewall access to Azure SQL (for example regarding BI) is easily scripted and here are 3 useful scripts for that purpose:
List current firewall rules:
SELECT * FROM sys.firewall_rules
If you need to grant access to the IPs 18.104.22.168 to 22.214.171.124:
EXEC sp_set_firewall_rule N'The_Name_That_Will_Be_Shown_On_The_List', '126.96.36.199', '188.8.131.52';
Getting rid of the above rule is just as simple:
EXEC sp_delete_firewall_rule N'The_Name_That_Will_Be_Shown_On_The_List'
The three above is all server rules so you need to run them towards the master database.
You can do the same tricks on database level:
SELECT * FROM sys.database_firewall_rules
EXEC sp_set_database_firewall_rule N'The_Name_That_Will_Be_Shown_On_The_List', '184.108.40.206', '220.127.116.11';
EXEC sp_delete_database_firewall_rule N'The_Name_That_Will_Be_Shown_On_The_List'
Remember to be run them on the desired database.
Please keep in mind that you are messing with security and I – as usual – don’t take any responsibility in any damage you might make by using the above.
This is something that I forget 2 seconds after I’ve used it so now I’ll put it here as a note to self.
I have a series of TSQL scripts that I use once in different circumstances and often it’s a while between each go. In some of the I need to add some environment specific information and instead of having to scroll down through the text the query editor offers a way of prompting for parameters through a tagging of text like this:
select <Parameter name, Data type, Default value>
Before executing the script you press CTRL+SHIFT+M (this is the part I usually forget) and that makes the editor prompt you like this:
Replace the Default value with the appropriate text and click OK. This will update your SQL script to this:
Not the most mind-blowing thing in the world, but a great help.
In the Dynamics 365 POS it’s possible to enable a developer mode that gives you some additional options like seeing the id of the strings, grid views, coloring aids and so on. To enable these features you need to rebuild the POS with the value config.isDebugMode to true in the pos.js file. That’s easy in the CPOS but requires some build/deploy in MPOS.
Our POS developer gave me a tip to shortcut that … a lot. It’s a few easy steps and they go like this:
Enable Developer mode in Windows. That’s done in settings on the box running the POS
Start the POS and hit F12 to enable the developer aid
In the bottom of the console type in Commerce.Config.isDebugMode=true and press Enter
Go to your POS settings to enable the Developer mode flag in here.
This will make some things way easier. Notice, that when done like this it is only for the current session. Doing it in the pos.js file-way is permanent.
In Dynamics 365 the offline story on the MPOS has been significantly improved since AX 2012. Now it’s more or less a click on the register in Dyn365, install the POS and distribute data. A bit simplified approach to life but anyways.
Here’s something I’ve seen a couple of times now. There’s just no jobs and nothing to process …
The event log gives it away a bit:
Failed to get offline sync data in offline database due to Exception. Error Details: Data Source=localhost\SQLEXPRESS;Initial Catalog=RetailOfflineDatabase;Integrated Security=True;Persist Security Info=False;Pooling=True;Encrypt=True;TrustServerCertificate=True
And in the details it’s clear that we’re facing a rights issue here. But in SQL Express with no management tools on the POS machine we don’t have many configuration options and even less when we’re in a setup with a large number of registers.
All you need to do is add the user logged in to Windows to these two groups on the local machine:
Log off and on again to activate the changes. Start your POS and check the database connection status. Hopefully, you should see a lot of jobs now:
You know that the server is running, but your RDP connection request is denied.
This might be due to the introduction of the IP access check introduced not so long ago and on production environment servers. To get around this you need to add your IP address to the white list for the environment.
To do this click Maintain and Enable access:
Select Enable access:
Click + to add a new rule:
Fill in the form with a relevant name and the IP address to white list:
To get your IP you can ask Google or use one of the many web sites offering that service. For example www.whatsmyip.org:
As soon as your have created the new rule you’re good to go (and connect):