We are trying to migrate data to CRM 4.0 using SSIS. CRM contains a plug in that works perfectly from the UI, however, SSIS is not firing the plug-in when records are created. The plug-in is registered for Update and Create and both are pre-stage. Both are synchronous. Both are for server and not offline. Pipeline is parent.
Anyone have any Ideas?
Thanks in advance for any help.
Plug-ins will not fire for operations directly against the SQL database. You must use mechanisms which work against the web services for your plug-ins to fire. CRM has a couple of import functions:
The Import functions through their web-ui and the Data Migration Manager (download for the SDK). Here is SDK coverage.
I'm actually not 100% sure whether the DMM goes against the web services or not.
Related
I have a project that is referencing an XRM Entity file and I was wondering if calling the API methods can completely replace my interaction with this file. E.g. there is a data contract between this XRM layer and CRM such that when an update happens in code through the XRM layer it will trigger the proper workflows in CRM. Will this interaction still be the case while interacting with the API?
Currently there are two active endpoints in CRM, the 2011 endpoints, and the WebApi endpoints (8.0, 8.1, 8.2, 9 etc). Previously, the SDK for CRM (Microsoft.Xrm.Sdk) has entirely been utilizing the 2011 endpoint via the IOrganizationService. There is a commitment to MS to replace the calls under the covers from the 2011 endpoint to the WebApi.
So if the desire is to use the WebApi and you're doing .net development, I'd just stick with it. If the idea is to remove all dependencies to the SDK, there is nothing stopping you as well. I would argue that you're going to have to spend more time ensuring you're handling all of the WebApi nuances correctly than any potential benefit you'd receive from removing dependencies on the SDK framework.
CRUD operations happening through CRM SDK Org Service or WEB API will trigger the configured WFs seamlessly as per Dynamics platform design.
The file you generated using crmsvcutil is helpful for Early bound coding which will help type check in compile time. Another way (without this file) is Late bound which is runtime check. Web api is going to be Late bound, so file can be retired and calls can be replaced.
If you are blocked with any particular web api call, you can reach out to community for help.
Hopefully, someone can straight up my PowerApps connectors understanding. Apparently, I have 3 connection options.
Common data service - this connection type only allows me to connect to CDS 1.0 databases, but I want to connect to an existing D365 v9 instance.
Common data service (experimental) - this connection type asked me for a D365 v9 instance ID, but everything is grey out after the step, i.e. it didn't show me any entity after connecting successfully.
D365 data source - this one works but I was told MS has stopped working on this connector. Also, I will have to update the connection after deployment to a different environment manually.
What is the best practice if I want to use a CDS connector? Or I will be stuck with the old D365 connector for now?
Thanks.
==11/1/2018 update==
I have a better understanding of my situation now. Every Dynamics 365 CE instance should have a PowerApp environment automatically, but one of my D365CE instances doesn't. I am suspecting it is because the D365CE instance is still version 8.2.
My question above is because I created an empty PowerApp environment and tried to connect it to the D365CE instance (v8.2). I will give you guys another update after I upgrade the instance to v9.
==11/30/2018 update==
Confirmed. By upgrading a D365CE instance from v8.2 to v9.0, the Power Platform generates an environment automatically and linked it to the D365CE/CDS.
Here's a breakdown of the three connectors you're looking at :
Common Data Service - this connector actually supports both versions of CDS, but it will be dependent based on the environment that you're in. So if you're in an environment that has a CDS1.0 database, it will connect by default to that environment. If you have a CDS2.0 database, it will connect by default to that environment.
Experimental Connector - this is similar to the previous connector, but it includes experimental features in development by our team, and isn't recommended for production use. Generally you should only be using this connector if there is a specific feature we announce in the experimental connector you wish you use.
Dynamics 365 Connector - this is similar to the base CDS connector, however it can only connect to CDS2.0 environments. It also has the ability to connect across environments. So you can be in Env1, but connect to a database in Env2. The normal CDS connector will only connect to the database within the environment you are building your app in.
Which one should you use? The Common Data Service connector is going to be your best option, it's where the most improvements are being released at the moment, and is designed to work best with PowerApps and Flow.
To connect to your Dynamics 365 environment, you'll want to make sure you start from web.powerapps.com and select that environment from the drop down in the top right, if you can't find your Dynamics 365 V9 environment - make sure you have system customizer permissions - if you do and you still can't see it, it may be an issue on our end. You can send me a message with your Dynamics org URL and we can check it for you.
Once you can select it from the environment drop down, you can then create a new app and use the Common Data Service connector, and it will connect directly to your Dynamics 365 data.
Hope this helps,
Clay.
I don't have much experience with CDS 1.0 in the Power Platform. I can share some insights on my experience with Microsoft Flow / Logic Apps, CDS 2.0, and Data Integration. So I hopes this helps add another perspective to this question too.
What is your goal in using Common Data Service? Just to pull Dynamics 365 CE data into it?
This recent Product Team Blog could be useful here if so.
Some initial feedback, if the main goal is to connect to a Dynamics 365 CE instance, consider using the Dynamics 365 Connector through Microsoft Flow. You can create a small Flow at https://flow.microsoft.com/ with a 2 step process like mine below. An event takes place in Dynamics, like creating an account. The event and it's data is captured and in used in a response process, like sending an email alert. In this case the alert is sent to the signed in users email.
From a developer standpoint you can also use the Xrm SDK and Web API to collect data and do some data processing as well in C# or JavaScript respectively too. This is more involved, but provides a greater amount of control around the data you're working with. There's a great intro to
Lastly you can spin up a PowerApp to surface your data as well with some pre build templates https://create.powerapps.com/.
Start with your Data and create a Dynamics 365 app in a phone layout.
Choose your organization and table.
After the app creates, hit play to run it.
Search for an account
It turned out the problem is not with the connectors but with PowerApp environments. By upgrading a D365CE instance from v8.2 to v9.0, the Power Platform generates an environment automatically and linked it to the D365CE/CDS. So, it should just work for all v9+ instances.
I have a plugin ex:which updates all its child records when that is updated.
This plugin is registered to execute in offline mode as well.
I have done this using ExecuteMultipleRequest. This is working fine when I am updating the parent record from CRM instance.
When I go offline and try to update the parent record its throwing business process error "executemultiplemaxbatchsize".
I checked the exception with Debugging it is as below.
System.NotImplementedException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #ABA895C7
Does ExecuteMultipleRequest work in Outlook offline mode?
As per MSDN link https://msdn.microsoft.com/en-in/library/microsoft.xrm.sdk.messages.executemultiplerequest.aspx
it says
This message works regardless whether the caller is connected to the server or offline.
Per the SDK documentation it should but I think that is typo in the documentation. You can open a ticket with Microsoft and they'll probably correct the documentation but not change the functionality.
The reason I believe it's a documentation is is that there is NO reason to use ExecuteMultipleRequest in a plugin. Since there is no SOAP overhead or latency - because the plugin is running on the server and does not use the Organization.svc endpoint - you don't gain any benefit from using ExecuteMultipleRequest in a plugin. ExecuteMultipleRequest is intended for use in client applications to improve performance, not for plugins and workflows.
We are strongly considering using Workflow Foundation 4 in our products, however must support both SQL Server and Oracle. Does anyone know an Oracle Instance Store provider for Workflow Foundation 4?
I know I could use SQL Server Express for it, but some of our customers use Oracle, and don't want to have an SQL Server, even free, to manage.
Tks
If you do not mind using a commercial product then DevExpress has a very good solution. 16 database systems are supported along with re hosted designer and custom activities. Read more in this post XAF Workflow persistence storage
An updated devart link on the subject. It works well for me, for the persistance and the tracking participant also.
http://www.devart.com/blogs/dotconnect/?p=5566
AFAIK there is no publicly available version of the instance that works with Oracle. I have seen the question a number of times however so I can only encourage someone to publish one of those I suspect have been created privately on CodePlex.
Use this dll. We are using it and works well. Still need to check tracking and load testing.
http://www.devart.com/forums/viewtopic.php?t=21044&start=0&postdays=0&postorder=asc&highlight=&sid=a5e672c431dafecb1e675b6fbecc5183
I need the document or form to be automatically updated when the data in the Oracle database is updated. If not possible, could anyone give me guidance to a solution similar to this?
Thanks for the help.
Oracle supports triggers in Java, so you could execute some code when data is changed in the DB. Sharepoint 2007 does support WebServices, so you could create a client which calls the web service to update the form.
But that sounds more simple than it is. The documentation for the web services in Sharepoint ... uh ... could be better. Many installations of Sharepoint insist on domain logins, so you would need to figure out a way to run Oracle with a Windows Domain logon.
In the end, it's probably more simple to create an email when the data changes in Oracle and have someone manually update the form.
That said, you paid a lot of money to Microsoft for Sharepoint, so they are obliged to tell you which API to use and they can probably even provide an example in, say C#. If all else fails, you can run a little server in C# which updates the form and which listens to data packets sent by a Java trigger in Oracle.
[EDIT] [Here is a blog post]2 to get you started with Java, Apache Axis and Sharepoint. Post a comment if you have any updates. LuUnfortunately, I'm no longer working at a company which uses Sharepoint.