GCC Archives - Aric Levin's Digital Transformation Blog http://aric.isite.dev/tag/gcc/ Microsoft Dynamics 365, Power Platform and Azure Wed, 11 May 2022 08:28:12 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.3 The Road to modern Virus Scanning http://aric.isite.dev/azure/post/road-virus-scan/ Thu, 02 Jul 2020 05:34:00 +0000 https://aric.isite.dev/index.php/2020/07/02/the-road-to-modern-virus-scanning/ I have been working in the Government space for a few years now, and most implementations of the Dynamics and Azure tenants and environments are hosted in the Government Cloud. This means that there are a lot of restrictions that we have to deal with, not only from Microsoft but also from the internal IT policies.

The post The Road to modern Virus Scanning appeared first on Aric Levin's Digital Transformation Blog.

]]>
I have been working in the Government space for a few years now, and most implementations of the Dynamics and Azure tenants and environments are hosted in the Government Cloud. This means that there are a lot of restrictions that we have to deal with, not only from Microsoft but also from the internal IT policies.

A few years back we launched our first Dynamics application where one of the requirements was the ability to scan files that were uploaded by end users, whether from the Dynamics application or from Dynamics Portals. These documents would be uploaded to an Azure Blob Storage Container, and as they were uploaded copies to a separate quarantine container until they would be scanned.

At the time our options for a Virus Scan solution were limited. We had an On-Premise Virus Scanning McAffee appliance that was available to us, and we ended up with a solution that would check every few minutes if there were pending quarantined uploads, we would scan them and then move them from the quarantine container back to the clean container.

The below diagram is the high level solution that was implemented.

Virus Scanning Solution - Scheduled Run

This solution worked fine when the traffic was not high, but we did experience at time of high traffic that it would not complete processing the files in the allocated time, and needed a separate solution. The heavy traffic was mostly experienced in the last few months during the COVID-19 pandemic where the amount of applications that we received were substantial higher.

We needed to find a solution to have a quicker turnaround. We have used the Azure Service Bus in previous projects to pass information between our Dynamics environment and our On-Premise servers, so this should work. We would change the process to handle this in real time. As the file is uploaded to our Azure Storage Container, we would immediately fire the Azure Service Bus.

I have written a few posts about Azure Service Bus in the past, so if you are interested in that implementation, click here.

This solution would call the Azure Service Bus listener as soon as the file is uploaded and sent to the Virus Scanner. We could also bypass the need of the quarantine container immediately and only send it there after the Scan if the file was infected. The diagram below shows the new solution.

Virus Scan Solution - Real Time (Azure Service Bus)

As I mentioned that we are in GCC and there are a lot of limitations both from the list of available connectors and the implementations that can be done, but I wanted to address this as if it was done in a Commercial Cloud.

I noticed a couple of weeks ago that Microsoft announced the availability of a new Virus Scanner connector called Virus Total. I was not aware of other options but when I did some searching I encountered the availability of three connectors that have the capabilities of scanning documents (or document streams): Virus Total, Cloudmersive Virus Scan and Microsoft Defender ATP. This was great, it would simplify this logic.

Regardless of which Virus Scanner you are using, you will need to get an API key from the vendor of the Virus Scanning connector in order to establish a connector. Depending on your load of scanning the your cost can be free or cost you some money. I think most of these vendors offer about 4000 free scans a month.

If you are using Dynamics Portals or Power Apps Portals, you can upload your documents to either an Azure Blob Storage Container or SharePoint. The following flow executes when a new filter is uploaded to a SharePoint folder, scans the file for Virus and creates a CDS record with the Status of a Successful or Unsuccessful scan. Let’s review this step by step.

The first part is going to be our trigger. When a new document is uploaded to SharePoint (or Azure Blob) the flow will be triggered to get the content of that document. In case of SharePoint, the single step will provide us with the Content of the Document. If using Azure Blob, we will need an additional step to get the content of the blob based on the path of the file.

Virus Scan Solutiion - Power Automate Trigger (SharePoint or Azure Blob)

Next, we will call the Scan file for Viruses. In this case we used the action from Cloudmersive, but any of the connectors should work just fine for this.

Virus Scan Solution - Scanning via ISV Connector

After the scanning is complete we will add a condition to our flow that looks for the result from the Scan. The CleanResult will return True if there are no Viruses and False otherwise. We can then determine what action we want to do. Delete the file, move to quarantine container or folder, write a record, etc… Your choice. In our case I just wrote it to CDS.

Virus Scan Solution - Post Scanning

That is basically it. You can add additional logic as you see needed, but this is all it takes. Again if you are in Government Cloud or your IT is blocking certain connectors this might not be the solution for you, but if you are able to implement this, it might save you a lot of trouble and headaches.

The post The Road to modern Virus Scanning appeared first on Aric Levin's Digital Transformation Blog.

]]>
Emergency Response for Businesses in the City of New York http://aric.isite.dev/dynamics/post/emergency-response-covid19-nyc/ Fri, 27 Mar 2020 18:00:00 +0000 https://aric.isite.dev/index.php/2020/03/27/emergency-response-for-businesses-in-the-city-of-new-york/ We have all been affected by the COVID-19 outbreak one way or another and have started getting used to a new reality, whether it is working remote, not being able to go to work or even worse have gotten infected by the virus. A few weeks ago (March 8), the mayor of New York City, Bill de Blasio said that the city would provide relief for small businesses across the City seeing revenue reduction of 25% or more because of the COVID-19 outbreak.

The post Emergency Response for Businesses in the City of New York appeared first on Aric Levin's Digital Transformation Blog.

]]>
We have all been affected by the COVID-19 outbreak one way or another and have started getting used to a new reality, whether it is working remote, not being able to go to work or even worse have gotten infected by the virus. A few weeks ago (March 8), the mayor of New York City, Bill de Blasio said that the city would provide relief for small businesses across the City seeing revenue reduction of 25% or more because of the COVID-19 outbreak.

For businesses under 100 employees, they would be eligible for a Interest Free loan of up to $75,000 and for business with less than 5 employees, they would provide a grant to cover 40% of payroll costs for two months in order to retain employees.

You can read the news release here.

Working as the Principal Solutions Architect within the Small Business Services department, we were tasked at implementing an easy way for New Yorkers to be able to submit their applications for grants and loans to the city. The agency moved to Dynamics 365 (Online) a couple of years earlier, and we have built a portal that allows businesses to submit certification applications and apply for reimbursement for Construction Safety training.

The grant application seemed to be very aligned to the Construction Safety reimbursement application that we built, and we could probably replicate the logic of this application very quickly. This included both a Model Driven app and a Dynamics Portal application. The Portal application involved multiple pages which allows us to collect business and financial information, and ask the users to upload evidence documents. We were able to go from development to production within less than a week after QA and UAT. For a team of 3 developers, I think this was a great turnaround. We received thousands of applications in the first few days and within the first three days of providing the grant funds, we gave businesses over 2 million dollars.

The day after we went live with the grant we started working on the loan application. This would be a little more complicated. We had most of the logic built within our Model Driven app, which was migrated from CRM On Demand to Dynamics a few months earlier, but the Portal has not been built yet. It was probably the third or fourth project in our backlog, something intended for the end of this year. We could do the same, because we were using different entities and processes for the Applications and for the Service Requests in the Common Data Service.

We created a copy of the logic from the Grant application and started replacing the entire logic so that it uses different types of entities. There was a lot more work to be done for this, but we were able to go through development, QA, UAT and production deployment in less than 1 week. There was a lot of overtime involved, but at the end your feel like you did something good, especially when it is to help people and businesses that are suffering in these times.

COVID-19 for NYC

Why all this from someone who usually write technical content. Well, I have been busy in the last few weeks making sure this is done right and helping coordinate between the agency program team and the application development team, but it just shows you the power of Dynamics and the Common Data Service, whether creating Model-Driven Apps, Canvas Apps and Portal Apps. When you need a quick turnaround, using a Low Code platform can really help you speed up development.

In times like these, there are a lot of fellow MVPs that are helping businesses by developing apps for them to help them in any way they can. See Power Addicts post.

In addition, Microsoft has also developed two solutions to help businesses related to COVID-19.

Crisis Communication: a Power Platform template
Emergency Response solution: A Microsoft Power Platform solution for healthcare emergency response

Hoping that this outbreak will be over soon and we will be able to return to our normal lives.

The post Emergency Response for Businesses in the City of New York appeared first on Aric Levin's Digital Transformation Blog.

]]>
Get Record CDS action missing attributes in Government Cloud http://aric.isite.dev/flow/post/cds-get-record-missing-attributes-gcc/ Sun, 19 Jan 2020 03:57:00 +0000 https://aric.isite.dev/index.php/2020/01/19/get-record-cds-action-missing-attributes-in-government-cloud/ cds-get-record-missing-attributes-gcc

The post Get Record CDS action missing attributes in Government Cloud appeared first on Aric Levin's Digital Transformation Blog.

]]>
While most of you might not be experiencing this issue, it is still a good workaround for a situation that you might have. Recently we had a situation that when we tried to retrieve the account record using the Get record action in our Government Cloud instance, but the results did not retrieve all the attributes. The attribute that we were really having an issue with was the address1_name.

That did not make much sense, so we had to do some investigation regarding this issue. The first thing that we tried to do is see if we were getting the same behavior using List records, and the results were the same. The List records action provided us the same attributes as we had in the Get record action. Now remember this is in Government Cloud, so we are using the Common Data Service connector and not the Common Data Service current environment connector where we can specify our list of select attributes.

Now we had to see if this behavior was the same in Commercial Cloud. I created a simple flow using the Get record action on the Account record and passing an Id of a record, and all the attributes got returned. This issue did not occur in commercial cloud with an identical test flow and the same data in both environments.

Common Data Service Get Record (GCC)

Of course, first thoughts … bug. Let Microsoft know. The problem is we need a quick resolution, and this does not seem to be something that we would get a resolution quickly. We are still waiting for the CDS Current Environment connector in GCC.

Now, we are getting to the workaround. What do we do? Build a custom connector? Doesn’t make much sense. Should be a quick way to handle this, and there is. We were going to use an HTTP connector.

In order to use an HTTP get action, we would be using a GET method passing the URI and Authentication information and calling the WebAPI directly. The screenshot below shows the required parameters in order to get this working.

HTTP Get Request - Get Missing Attributes GCC

We initialize the Authority, Tenant, Audience, Client Id and Client Secret of our instance in order to connect to the Web Api and then the results will allow us to get the address1_name value from the account entity as it is in our case.

The next action that we had was to create a lead. We use all the data from the Get record in addition to the address1_name field from the HTTPGetAddressName request. The screenshot below shows creating the new record from both the CDS Get Request and the HTTP Get Request.

Common Data Service Create Record + HTTP Response (GCC)

The Location is a formula containing body(‘HTTPGetAddressName’)[‘address1_name’]

Hope this is helpful to anyone, though it seems that the CDS Current Environment Connector will be arriving to GCC and GCC High sometime soon. I don’t have any official statement yet.

The post Get Record CDS action missing attributes in Government Cloud appeared first on Aric Levin's Digital Transformation Blog.

]]>