a) Register TwoWay Endpoint
As we did many times, Copy the Connection String from Policy of Azure Service Bus.
Now copy in the Service End Point entry of Plug-in Registration Tool.
In resulting detail page, change do below changes;
a. Select TwoWay for the Designation Type
b. Add https: to Namespace Address
c. Give a name to Path.
b) Implement Listener
Now implement below Listener code in new Console Application.
Need to install below Nuget Packages;
a. Microsoft.Crm.Sdk.CoreAssemblies
b. WindowsAzure.ServiceBus
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Xrm.Sdk; using Microsoft.ServiceBus.Messaging; using System.Runtime.Remoting.Contexts; using System.ServiceModel; using Microsoft.ServiceBus; namespace AsbListnerTwoWay { class Program { static void Main(string[] args) { string asbAccessKeyName = "Sum1ServiceBusPolicy"; string asbAccessKey = "7WxSLRMvYF0A3HbLUgfQeqIEb1eKsHgg5mrUwc="; string asbEndPoint = "https://sumeservicebus1.servicebus.windows.net"; var serviceHost = new ServiceHost(typeof(TwoWayServiceEndpoint)); var transportClient = new TransportClientEndpointBehavior(TokenProvider.CreateSharedAccessSignatureTokenProvider(asbAccessKeyName, asbAccessKey)); serviceHost.AddServiceEndpoint(typeof(ITwoWayServiceEndpointPlugin), new WS2007HttpRelayBinding(), asbEndPoint).EndpointBehaviors.Add(transportClient); serviceHost.Open(); Console.ReadLine(); } } public class TwoWayServiceEndpoint : ITwoWayServiceEndpointPlugin { string ITwoWayServiceEndpointPlugin.Execute(RemoteExecutionContext executionContext) { string message = executionContext.PrimaryEntityId.ToString(); Console.WriteLine("Record Id : {0}", message); return message; } } }
c) Implement Azure Aware Plug-in
Now read Service End Point Id by going to properties of the entry we created in first step as below;
..and implement a Plug-code (for Account Post Create). This code consist of Service End Point reference which uses the Id we read above.
using System; using Microsoft.Xrm.Sdk; namespace SumeTrial3Plugin { public class AccountPostCreate : IPlugin { public void Execute(IServiceProvider serviceProvider) { Guid serviceEndPointId = new Guid("63c5c746-e07d-e811-a967-000d3ad1c0d2"); IPluginExecutionContext pluginContext = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IServiceEndpointNotificationService service = (IServiceEndpointNotificationService)serviceProvider.GetService(typeof(IServiceEndpointNotificationService)); try { tracingService.Trace("Passing Context to Service Endpoint"); string response = service.Execute(new EntityReference("serviceendpoint",serviceEndPointId), pluginContext); if (!String.IsNullOrEmpty(response)) { tracingService.Trace("response : {0}", response); } tracingService.Trace("Plug-in completed"); } catch (Exception ex) { tracingService.Trace("Error: {0}", ex.Message); throw; } } } }
Then register this plug-in as usual through Plug-in registration tool.
d) Test the operation
Now execute the Console Application (Listener) and Create an Account in Dynamics 365. You will notice below two;
1) Console Application/ Listener program pics the Context and write the Id.
2) If you check, Plug-in Trace Log, you will see the response has been retrieved by the Plug-in back.
Thanks to the admin you have spend a lot for this blog I gained some useful info for you. Keep doing.
ReplyDeletemicrosoft dynamics crm training institutes in chennai
microsoft dynamics training
CCNA Training in Chennai
Salesforce Training in Chennai
gst classes in chennai
microsoft crm training