Creating you First Azure Database

If you’re still creating databases locally for all your development and testing needs, it’s time to give yourself the kick you need to start doing things a little differently and learn something new in the process.

Going to Azure isn’t as complicated as you think (if you start small).  If you’re worried about costs, there are tons of credits floating around to make the learning cycle quick and painless.

First, setup a Resource Group, for a listing of all Azure related terminology, check here.  When you’re done doing this, navigate down to SQL Databases and create a database server (a URL) and whatever associated database you want to go along with it.

In my portal view, this looks a little like this where I now have a server and a database.

Read More

Dynamics365 Alternate Keys and UpSert

Using Alternate keys is an easy way to stop doing pre and post checks for whether you can insert data into Dynamics.

Before you had to do a check behind the scenes for whether an “Id” existed and if not go and insert it.

Now using the “Upsert” pattern in Dynamics, you can accomplish this task in one method call using an alternate key.

At’s it’s most simplest implementation, I created a custom entity and a field (wholenumber) that I then declared as my alternate key.


Then I wrote the following code to insert the following record into my system. 

Read More

Keeping your Dynamics365 Audit Logs Tidy

Audits are a great way to see what has happened on records, what they did and more importantly who did it.

But if you have automated processes running that are pumping data into Dynamics because a field or two has changed, you might end up with an Audit History looking something like this.

In this case, an update was triggered, but it wasn’t until the fourth update that there was an actual difference in the data being changed.  Even then, when we sent the whole packet of data, we sent it all.

With only four feels you can already see this gets a little painful to follow.

Capture.PNGRead More

Advanced Code Tasks with the Package Deployer

Running simple, one-hit code tasks in the Package Deployer is pretty easy and works when you have one or two projects that you are working on.

However, I’m pretty lazy and not much for running the same patterns over and over again.

To this end, I came up with a Framework that requires you to only code your Package once while letting you maintain your tasks in another project that you don’t need to reference directly.

The implementation is accomplished via an Interface library that gets shared between projects.  In this case, I called it “IDeploymentTask” and gave it some property and events to be used while it does it work so it can update the UI accordingly.  This interface is located in a common project that both my Package Deployer users

Read More

Accessing Data with LiteDb

In my last post I talked about how easy it was to create a database with LiteDb.

But accessing your data is even easier.

To start off, assuming we have no document (i.e., structure) associated with our data – we can create a generic table on the fly using the built in BSonDocument structure.

In this example, I first use my database to get a collection of documents under “FirstTable”.  If it’s your first time creating this document, don’t worry, it’ll be created for you, so no need to do any “CREATE” mumbo jumbo.

var FirstTable = database.GetCollection("FirstTable");

Now I’m going to create some data.  The simplest, most brain-dead way to do this is to create a Dictionary, make some columns and give them whatever values I want that are of type BsonValue

Read More