CRUD in Dataverse Part 2: AWS DynamoDB as Virtual Table
Image Source:
Microsoft Dataverse
Sep 26, 2023 5:46 PM

CRUD in Dataverse Part 2: AWS DynamoDB as Virtual Table

by HubSite 365 about Michael Megel

Enterprise Architect, Azure DevOps, Power Platform Addict, Cloud Solutions & Intelligent ERP ... Never stop learning!

Citizen DeveloperMicrosoft DataverseM365 Hot News

Discover AWS DynamoDB as a Virtual Table in Dataverse, setting up OData service with CRUD functionality in this expert guide.

The author Michael Megel is discussing about how to set up a DynamoDB table in AWS and configure it to act as a Virtual Table in Microsoft's Data management solution, conventionally known as Dataverse, via an OData service with CRUD (Create, Read, Update, Delete) operations. This setup allows full read and write access from Dataverse to AWS Data.

Initially, the author set up a DynamoDB table in AWS as his database, then linked up the database with a serverless AWS Lambda function, acting as the host platform for the OData API service. The subsequent steps involved: implementing the CRUD operations within the OData API, and lastly, utilizing the Virtual Table via the OData API in certain Dataverse applications such as a canvas app. The author had previously outlined the process of setting up an OData Service in AWS in a preceding blog post.

When the author did not initially set up an AWS DynamoDB to store his data and failed to insert CRUD operations to his serverless OData service, he was left with an OData API that merely provided an Entity Data Model (EDM) and read functions for his chosen entity, known as ProductCategory. Link to the resource can be found here.

The AWS database service similar to Azure's Cosmos DB that the author used was a prompt, flexible NoSQL database service (AWS DynamoDB), designed for single-digit millisecond performance at any scale. His chosen example data subsets were Product Categories.

A new class, named DatabaseService, was created in order to encapsulate the interactions with DynamoDB. This class contained methods for read and write operations with the database. The AWS SDK for .NET made it easier to interact with AWS DynamoDB, given its vast, illustrative documentation and multitude of samples.

Dataverse CRUD operations had to be implemented at the HTTP level in the OData Controller class. These operations included the HTTP POST method for 'create'; HTTP GET method for 'read'; HTTP PATCH method for 'update'; and finally, HTTP DELETE method for 'delete' operation.

After implementing CRUD operations, the author was ready to use his DynamoDB in the OData Controller class, and to append routing towards implementing the CRUD functions. Following this, he moved further to test his changes. However, as he forgot to assign permissions to his AWS Lambda function during the testing phase, the function's attempt to access DynamoDB failed. He then needed to fix this issue by adding permissions to his AWS Lambda function.

After making the necessary permissions adjustments, the data was correctly displayed from his DynamoDB in the Microsoft Dataverse. Link for more details is available here. On finalizing the permissions, the author created a new Canvas app in the Dataverse, built on top of his AWS tables. His key achievement was to make this a seamless and smooth process, even though it was initially challenging, owing to the lack of readily available information to construct a functioning demonstration.

Key Insights on Dataverse and AWS DynamoDB

Microsoft's Dataverse and Amazon's AWS DynamoDB are two potent platforms with huge potential when it comes to handling data. Interconnection of these platforms via OData service and implementation of CRUD operations open the door to various capabilities, simplifying data management and increasing productivity. Transitioning from a traditional database management approach to leveraging these progressive technologies reflects adaptability and scalability for data handling.

Read the full article AWS DynamoDB as Virtual Table with CRUD in Dataverse – Part 2

Microsoft Dataverse - CRUD in Dataverse Part 2: AWS DynamoDB as Virtual Table

Learn about AWS DynamoDB as Virtual Table with CRUD in Dataverse – Part 2

Interfacing AWS DynamoDB with Microsoft Dataverse may initially seem like an insurmountable challenge, but with a systematic approach, it's entirely feasible. The primary step involves setting up an OData service endowed with Create, Read, Update, and Delete (CRUD) functionality. The blog post delves into how to facilitate complete read and write access from Dataverse to AWS Data.

To give a summarized overview, the process involves setting up a DynamoDB table as a database in AWS initially. Subsequently, this database is coupled with a serverless AWS Lambda function, hosting the OData API service. This is followed up by integrating the CRUD operations into the OData API. Ultimately, the Virtual Table is utilized, based on the OData API, for instance, within a canvas app in Dataverse.

In earlier blog posts, guidance was provided on setting up an OData Service in AWS. The process involved creating and preparing an AWS stack inclusive of API Gateway, AWS Lambda Function, Roles, etc. Additionally, the OData service was set up as a Virtual Data Source in Dataverse.

Exploring the AWS DynamoDB a bit further, it is a swift, flexible, and scalable NoSQL database service designed for high-speed performance at any scale. In terms of functionality, it's quite parallel to Azure Cosmos DB, and stores data.

A detailed exposure to using DynamoDB from an ASP.NET Core project is also explained. It involves adding a package reference, defining a new class DatabaseService, creating and returning a new DynamoDBContext based on a new AmazonDynamoDBClient, and more.

The post further moves on to CRUD operations of the integration. Creation, reading, updating, and deletion of an entity using the HTTP methods in the OData controller class are discussed in detail there. All the necessary codes and terminal responses are given for a complete understanding.

In the multidimensional approach provided, the process of setting up a virtual table is clarified. The post adds an interesting twist where the author describes a failure scenario during rollout due to a lack of permission. The correction procedure of assigning permissions in AWS to the AWS Lambda Function execution role is explained aptly.

Bringing AWS DynamoDB as a Virtual Table with CRUD in Dataverse into action, a visual table is created in Dataverse. The post wraps up implying an in-depth exploration into setting up AWS virtual tables solution in Dataverse for Teams area will be covered in future posts. Data changes and Virtual Entities' creation will be other enriched areas in the forthcoming posts.

In conclusion, the comprehensive text offers a complete step-by-step guide to interfacing AWS DynamoDB with Microsoft Dataverse. The detailed procedures also come with the remedy for possible glitches. The author promises to delve even deeper into the subject in the near future.

  • Related Courses: AWS DynamoDB Full Course, ASP.NET Core Training
  • Related Blogs: Set up an OData Service in AWS, Integrating AWS DynamoDB in ASP.NET Core project

More details can be found on AWS DynamoDB as Virtual Table with CRUD in Dataverse – Part 2

More links on about AWS DynamoDB as Virtual Table with CRUD in Dataverse – Part 2

AWS DynamoDB as Virtual Table with CRUD in Dataverse
Feb 5, 2023 — AWS DynamoDB as Virtual Table in Dataverse sounds initially impossible. I show you can how to setup CRUD functionality for an OData service!
AWS DynamoDB as Virtual Table with CRUD in Dataverse
It can be used as a virtual table with CRUD operations in Dataverse, the data management platform from Microsoft. In Part 2 of this series, we will discuss how ...
Sample: Custom virtual table provider with CRUD operations
Apr 1, 2022 — Sample demonstrates how to implement a generic custom virtual table that supports CRUD operations..


AWS DynamoDB, Virtual Table, CRUD, Dataverse, DynamoDB CRUD, AWS Dataverse, DynamoDB Dataverse, Virtual Table Dataverse, DynamoDB Virtual Table, CRUD in Dataverse.