Part One: Identify, Define, Build, Migrate

An assortment of fire department patchesMy dad passed away in 2015, leaving behind an extensive collection of fire trucks, patches, and other fire department (FD) memorabilia.  Before he passed, he gave us instructions to sell them and some direction on what to do with the money. After a few years of not really wanting to deal with it, my family decided to make a project out of it.  My mom, sister, wife, two daughters, and I are working our way through thousands of patches, hundreds of fire trucks, and who knows how many pendants and other trinket like items, all while working full-time jobs (school for the kiddos) and from different locations.

Dad was great about logging his patches into a Microsoft Access database, but not so good about taking pictures of them, and even worse at logging his fire trucks and other items.  The objective and high-level steps for this project were quickly identified.

The Objective

  1. Help my mom liquidate my dad’s enormous fire department memorabilia collection.

The High-Level Steps

  1. Identify the technologies to be used. Easy!
    1. Microsoft Dynamics 365 & Common Data Service – our foundation.
    2. Microsoft PowerApps – mobile app for inventory capture.
    3. Microsoft Flow – move data and attachments around, auto-create ads.
    4. Microsoft SharePoint – store ads, images. Keep large files out of CDS.
  2. Complete a first-cut of the data schema and migrate the patches data from the Microsoft Access database.
  3. Configure a software solution for the family to use so we can all capture data to a single database. Solution must be user friendly!
  4. Configure processes that streamline the creation of advertisements and other data processing.
  5. Start capturing data and creating ads!

The Players

Not everyone in an organization has the same skill level and this will certainly lead to some challenges.  With that in mind, let’s look at the players involved in our project.

  1. Mom – Low technical skill – Capable of using anything “Excel-like” to capture data.
  2. Sister – Low-to-Medium – Arguably more advanced than mom, works on a Mac. Enough said.
  3. Wife – Medium – Works around Excel with ease, understands what I do from a high level.
  4. Kids – Low-to-Medium – two daughters, ages 12 and 10. Both are geniuses on any touch device but have no clue how to work around Excel.
  5. Me – High – developer and technology enthusiast!

I’ve spent the better part of my career as a .Net developer working in SharePoint and Dynamics, among other things, so it was easy for me to decide on a path forward.  Let’s get rolling!

Configure Data Schema and Migrate Microsoft Access Data

Just so no one thinks I’m lying here for the sake of this blog, let’s see what my dad was working with back in the day.  Yes, he was ND alum.

Screenshot of patch entry form in Microsoft AccessPatch data in Microsoft Access

Side note: You see that column named “Patch Locator” highlighted in that last screen shot?  My dad kept his patches in old-school photo albums that he then stored in boxes.  This ‘locator’ field was his way of finding the patch once a box was full and stored away.  Genius dad!

As you can see defining the schema for patches was pretty much done.  If we run into anything along the way, we can certainly add it.

  1. In Dynamics I created an un-managed solution named “Fire Department Items Solution” and added two custom entities, “Patch” and “Fire Truck.”
  2. I added all the fields my dad had in his Access database, and then I made sure that the out of box field “EntityImage” was available for displaying an image of the patch.

PRO TIP:  Dynamics 365 only allows you to have one image field on an entity and it is not configured out of the box.  To use this field, create a new field on your entity and use the data type “Image”.  This will automatically set the name of your field to “EntityImage” and the image you set there will be used as your entity image at the top of the entity form.

Screenshot of PowerAppsPowerApps details

  1. Before we save and publish, we need to enable Notes functionality for our entities. To do this select the entity from the left pane in the solution explorer, then make sure the “Notes (includes attachments)” checkbox is selected.

PRO TIP:  When you save an image to the EntityImage filed it loses a lot of its quality.  Because we are using this data for inventory, including creating ads, we don’t want to lose the quality of our images.  For this reason, we will use the attachments collection for our entity to capture the actual high-quality image.  We will then use Microsoft Flow to take that image and store it as the EntityImage (which will lose quality) but also store the high-quality version in a SharePoint library.

PowerApps note functionality

  1. Finally, be sure to publish your customizations.

Migrating the Data

Now it’s time to migrate the data.  Since this was such a simple schema, I opted to use the out-of-box data import functionality that Dynamics 365 provides.  With that said, however, there are a few different ways to accomplish this migration. For me it was easy to simply export the Microsoft Access database to Excel, then use that file to import into Dynamics 365.

    1. Export your data into an Excel file from Microsoft Access.
      1. Export your data into an Excel file from Microsoft Access.
    2. In Excel you’ll want to Save a Copy and save it as a CSV file.
      Save a copy as a CSV file
    3. Open the Patch View in Dynamics and use the out-of-box Import from Excel functionality to load our data.

3. Open the Patch View in Dynamics and use the out-of-box Import from Excel functionality

    1. Choose the CSV file we just created when we saved the copy in Excel.

Choose your CSV file

    1. On this next screen, let’s click the button to Review our Field Mappings.

Review Field Mappings

    1. Here you’ll see some of my fields are mapped and some aren’t. Let’s get those shored up before we proceed.

Resolve mapped items

    1. Now that I’ve resolved all the field mappings, you’ll see we have green check marks across the board and we’re ready to import. Click the Finish Import button and you’re off.

Finish Import button

    1. You can check out the progress of the import by navigating to Settings à Data Management à

View Import progress

Summary & Next Steps

Let’s look at what we’ve done here.  On the surface it would appear we’ve simply gone into Dynamics 365 and configured a couple of entities.  But as we know, Dynamics 365 v9 was built on the Common Data Service (CDS) and that means our Dynamics data is now available to any other application that can connect to the CDS.  Why is this important for this project you might ask?  That answer will become clear in the next part of this blog.  For now, here are some screen shots on how things look now that we have our patch data migrated.

A look at the imported data

Keep in mind, come end of January 2019 everyone will need to switch over to Microsoft’s Unified Interface and that’s what we’re using here for our patches.  This is an example of a model-driven PowerApp which we’ll discuss in our next entry to this blog.

If you log in to your PowerApps environment using the same credentials as your Dynamics 365 environment, you should see your entities and the data migrated in this environment too.  Remember, once it’s in Dynamics, it’s available through the CDS.

A view of the migrated data

One thing to note, if you have 10,000-plus records like I do for patches, CDS in the browser may freeze trying to display them all.  I would hope MS resolves this at some point so that it handles paging and displaying of data as gracefully as the D365 web client does.

Stay tuned for my next entry where we’ll set up our SharePoint Online site, create a simple canvas PowerApp for inventory management on our mobile devices, and then set up a Flow to help move some things around and automate the creation of our online advertisements.

Thanks for reading!

Calling all SharePoint users and Office 365 developers! AIS is hosting this month’s Meetup for the Triangle SharePoint User Group in Morrisville, North Carolina. The Meetup is this Thursday at AIS’ North Carolina office. There are still a few spots left so be sure to RVSP today.

About the Session:

In this session we’ll walk through building a client-side web part with the SharePoint framework. By using generic components, we can build web parts that can be reused across an entire organization or multiple clients. Time permitting, we will walk through several examples and possibly some framework extensions.

Event Agenda:

5:45 p.m.  Doors Open
5:45 to 6:15 p.m.  Networking & Dinner
6:15 p.m.  Announcements & Introductions
6:20 to 7:40 p.m. Presentation

The TriSPUG Meetups are a fantastic way for developers, IT, and business users to learn, share, and grow their knowledge in Microsoft SharePoint and Office 365. Attendance is always free and informal. All interest levels and experience levels are welcome!

RSVP Here!

With the wide variety of updated features available through Office 365, organizations can now create robust, beautiful intranets right out-of-the-box. In contrast to SharePoint classic sites, SharePoint modern sites have a clean interface, are responsive and adaptive to mobile devices, and offer significant performance improvements.

Read part one of this three-part blog series here. 

Read part two here.

Now that you set up your SharePoint libraries to use custom content types, you can add content. Go to the Documents library and upload a few documents to the library. For each document, edit the properties and choose any appropriate values for your custom site columns.

In the example below, All isselected for the AIS Office Location field, Human Resources is selected for the AIS Support Team (department) field, and the value for Show on AIS Connect Home is set to Yes.

Adding content to SharePoint

Read More…

With the wide variety of updated features available through Office 365, organizations can now create robust, beautiful intranets right out-of-the-box. In contrast to SharePoint classic sites, SharePoint modern sites have a clean interface, are responsive and adaptive to mobile devices, and offer significant performance improvements.

Read part one of this three-part blog series here. 

In today’s post, we’ll move on to setting up each site in the hub. In this sample infrastructure, each department will have a communication site to share with the entire organization, and an internal team site. Create a new SharePoint site using a modern communication site design.

SharePoint Communication Site screenshot

Read More…

SharePoint logoWith the wide variety of updated features available through Office 365, organizations can now create robust, beautiful intranets right out-of-the-box. In contrast to SharePoint classic sites, SharePoint modern sites have a clean interface, are responsive and adaptive to mobile devices, and offer significant performance improvements.

In the past, many intranets were built as a single large site collection with multiple levels of sub-sites underneath. The modern infrastructure can be flatter, with each department as its own site collection, but connected together through a SharePoint hub site.

Key features of a modern hub site — which make it an ideal starting point for an intranet — include:

  • Cross-site navigation:  consistent top navigation among associated sites
  • Content roll-up:  aggregated news and content among associated sites
  • Consistent look-and-feel: a common theme / branding for associated sites
  • Scoped search:  search content within associated sites

Now let’s walk through the process of creating a new, modern intranet in SharePoint. (Note that for the sake of length and readability, we’ll be publishing this process in three parts here on the blog. The entire guide will be available as a handy download, however, once the series has concluded!)

To start, create a new SharePoint site using a modern communication site design.

Creating a new SharePoint site

Read More…

Calling all SharePoint users and Office 365 developers! Once again, we invite you to attend this month’s Meetup for the Triangle SharePoint User Group in Morrisville, North Carolina. The Meetup is TOMORROW and space in limited, so RSVP today to claim your spot.

About the Session: 

Many traditional SharePoint developers have been caught off guard with the fast pace of changes to the SharePoint ecosystem in recent years. Whether it’s the rapid adoption of Office 365 or the growing investment in cloud-based infrastructure and services, it can all feel very foreign to anyone still using some of the same development approaches and tools first pioneered in SharePoint 2007.

This month’s session will break down traditional SharePoint solutions (such as features, webparts, workflows, event receivers, and timer jobs) and discuss how they translate to modern equivalents in Office 365 and the cloud. We’ll touch on popular topics like the role of SPFX, PowerApps, and Flow, and also other key Azure Services such as Logic Apps, Azure Functions, and Hybrid Data Connections.

You’ll gain an understanding for the growing role of new APIs such as Microsoft Graph, various nuances with authentication, and the importance of hybrid environments and accessing on-premises data. Along the way you’ll discover some of the tools, techniques, and approaches that will be invaluable as you decide what part of your toolbelt will be the most important to upgrade!

About the Speaker: 

Josh Carlisle is a full stack software developer based out of Raleigh, North Carolina working as a Senior Solution Architect at B&R Business Solutions. He has 20 years of development experience from the early days of VB5, COM, ASP, and the birth of .Net to his first adventures with SharePoint development in 2004. His current focus is on architecting, designing, and developing solutions for Azure, Office 365, and SharePoint using the latest front end JavaScript frameworks such as Angular and React alongside service side solutions based on ASP.NET Core and Node.js. Josh also enjoys sharing is knowledge and experience at regional user groups and community events.

Come join your peers and fellow developers for a great session of networking and learning. As always, this event is free but space in limited. RSVP here!

Calling all SharePoint users and Office 365 developers! AIS is sponsoring this month’s Meetup for the Triangle SharePoint User Group in Morrisville, North Carolina. It’s shaping up to be a great one, so RSVP today to claim your spot.

About the Session:

Artificial Intelligence and Machine Learning are the new buzzwords in the industry. In this session, we will cover Artificial Intelligence and Cognitive Services for Office 365 developers.

About the Speaker:

Prashant G. Bhoyar is a Microsoft Office Server & Services MVP and Microsoft Certified Professional. He currently works as a Solution Architect at WithumSmith+Brown, P.C. (formerly Portal Solutions), one of the top 30 accounting and advisory firms in the country. He is a trusted advisor and Subject Matter Expert and specializes in the development and post-implementation adoption of complex custom solutions in Azure, Office 365, and SharePoint. Prashant has supported many government agencies and non-profit organizations in the Washington D.C. metropolitan area. Prashant was the co-author of the book PowerShell for Office 365 and was the technical reviewer of the book Pro SharePoint 2013 Administration.

He serves on the leadership committee for the Artificial Intelligence and Machine Learning User Group, and D.C. Metro Office 365 User Group, and SharePoint Saturday Baltimore event and SharePoint Saturday Washington DC event. He actively speaks at technical conferences across the country, most recently in Chicago, Seattle, New Orleans, Baltimore, Philadelphia, as well as, at many events throughout North America. Prashant is a recipient of the “Antarctic Service Medal of the United States of America” for his outstanding service in Antarctica.

Click here for the event’s agenda, location and to claim your spot! Space is limited so RSVP today!

With the recent release of Microsoft Teams, you may be wondering what the differences between Teams and Office 365 Groups are. At AIS, we’re always on the forefront of the latest Office 365 services, and given our long-time partnership with Microsoft, we’ve actually been using both Microsoft Teams and Office 365 Groups for while now. We’ve gotten a solid sense of what both services are good at and what they’re…not so good at. At least not yet. Read More…
If you need managed services to maintain peak IT network operations, consider us here at Applied Information Sciences. We’ll manage all your IT services for a predictable cost so you can focus on more strategic investments. AIS’ Managed Services Practice provides ongoing responsibility for monitoring, patching and problem resolution for specific IT systems on your company’s behalf.

Capabilities

  • Patching
  • Monitoring
  • Alerting
  • Backup and Restore
  • Incident Response

AIS’ Managed Service Practice has up to 24×7 coverage for initial responses to incidents through a combination of dedicated, part- and full-time staff, both onshore and offshore. AIS prides itself in being on the leading edge of managed services support. Our collaborative, disciplined approach is committed to quality, value, time and budget. Read More…

Screen Shot 2015-12-09 at 1.21.26 PMWith the abundance of JavaScript libraries and frameworks available today, it’s hard to decide what is going to work best for a certain requirement. Add in the fact that there are many server-side tools that can also accomplish the task and you could spend hours just narrowing down options to test before deciding on the path you’ll take in the end. This was a recent conundrum for me when approached to incorporate child data management in the parent forms on a SharePoint 2010 project. My experience with JavaScript has been limited over my career because I’ve been so focused on the backend of SharePoint during the majority of that time. My current client has need for a better user experience, so I’ve been trying to fill that hole in my skills.  This project offered an opportunity to do just that.

While it’s possible to put an ASP GridView control in an Update Panel, a client-side approach seemed cleaner and a way to expand my JavaScript skills. I looked at many options like JQuery Datatables, koGrid, and a few others, but they didn’t give me the look, price (free), and/or TypeScript definitions for me to easily take off with implementing it.

I decided to build my own solution since it would be a relatively simple design and it would let me dig into KnockoutJS. In addition, it would be easier to use TypeScript to build an easier-to-maintain solution since it incorporates many of the ECMAScript 6 features like classes and modules, among others. Read More…