In CRM 2011, a CRM user modified a contact information. I can check that through audit logs the changes that the user made.
Now the user modified the First Name and Last Name of the Contact (required fields in CRM) to blank. Now I know that this is not possible through CRM form as the fields are required in the form.
Also there is no JS or any other code written on the form that can disable that required functionality.
I want to know from where these records have been modified in MS CRM.
Also tracing is been disabled in CRM so we do not have logs for this edit :-(
Any help in this regards will be really helpful.
These fields do not need to be updated on a CRM form directly. They can be updated in various ways. Common suspects are:
Custom plugins
Workflows
External parts accessing the Organization.svc or OrganizationData.svc endpoints
In all scenerio's the Business Required constraint is bypassed. In CRM plugins and workflows can actually act on behalf of the user and doing so it appears as if the user modified affected records himself directly.
Related
I have a requirement where I need to auto fill the values in the Add Document Location Box when a User clicks on Documents in the Dynamics CRM 2016. I don't think there is an out of the box way to do this. Any hints or suggestions are appreciated.
I tried creating a sharepoint document location record on creating the record. When I click on Documents, it tries to find the URL for the location and gives an error that the location does not exist. I had hoped that the sharepoint folder will be created once the Sharepoint document location record has been created and associated with the record but that is not the case.
In case you have ever faced this problem, or if you have an alternative solution, please let me know.
Thanks!
In CRM 2016 you can enable server-based SharePoint integration. As a side note, in previous versions of CRM the List Component was required for the functionality you describe, but that is now deprecated.
When clicking on Documents on a SharePoint enabled record, you will see a popup similar to the following after enabling the server-based SharePoint integration:
I am managing a projects (subtype of Activity) collection and I would like to implement a simple "Status change" log.
The idea would be that of replicating the simple but effective order management log seen in Prestashop (see image), Order management screen: User selects the new project status, clicks [UPDATE STATUS], and a new row gets appended to the log with new status, date of the change, person having triggered the change.
The basic implementation could be a text area used as a log, the best implementation possible would be that of having a grid.
Could somebody point me in the right direction to do this?
I am using version 2011 but moving to 2015 in a few days.
I suggest using auditing:
The following list identifies the data and operations that can be audited:
Create, update, and delete operations on records.
You could have an OptionSet representing the status of a project. If you enable auditing on this field (and enable auditing in general for CRM) you will be able to see an audit history of changes to the field. To do so users will have to navigate to the Audit History of the record.
The audit history will look similar to the following (in 2011):
If you don't want to use Auditing as suggested by Henrik in his answer, the alternative is to create a custom entity that will act as a log entity for your status change.
In order to implement the track of the changes, you need to implement a Plugin that will be triggered on the update message and will create the records inside the new custom entity.
I have a requirement to copy all Notes and Activities while converting Lead to Contact and vice versa.
When I Qualifying Lead to Contact I use my custom plugin which is triggered by QualifyLead event. There is no out of the box solution to convert Contact to Lead so I use my custom on-demand dialog. But this dialog unable to run my custom plugin (which will copy Notes and Activities from Contact to Lead).
Please help me to find a way to copy all this stuff from Contact to Lead.
You can create a Custom Workflow Activity with the code of your custom plugin and uses as step inside your on-demand dialog.
You can start from here:
http://msdn.microsoft.com/en-us/library/gg328515.aspx
Another way that you can do this is to simply reference the notes from the Lead in the Contact, Account, or Opportunity entities using an IFrame and some JavaScript as described in http://030bacf.netsolhost.com/WordPress/?cat=69 . Depending on how many records you have, potentially this could even be a better solution since you are only keeping one copy of the notes which will help keep the size of the database more manageable and performance better. Or you could use this solution for the notes and the solution recommended by Guido for the Activity records. I had to make a change to the URL used for CRM 2013 and have copied that part below.
//src="/"+context.getContext().getOrgUniqueName()+"/_controls/note/notesdata.aspx?id="+lookupItem[0].id+"&ParentEntity=3&EnableInlineEdit=false&EnableInsert=false";
// change to this for CRM 2013
src=serverUrl+"/"+Xrm.Page.context.prependOrgName("/_controls/notes/notesdata.aspx?id="+lookupItem[0].id+"&ParentEntity=3&EnableInlineEdit=false&EnableInsert=false");
Is there any way to determine which user and when that last changed or published a form in Dynamics CRM 2011?
I've looked everywhere that I can think of, from the form itself to auditing, customizations in the default solution, system settings and I can't find anything anywhere.
If it isn't turned on by default, how do I turn on auditing on the framework itself instead of the content so we can know next time something strange happens?
There isn't a built-in log or audit for the customization changes.
You can try to build your own with plugins attached to the Publish and PublishAll messages
I am using On-Premise crm dynamics 2011 and I am facing problem in the following situation. The requirement in one of the modules I am developing is to get an input from the end user and use it to filter the contacts in crm and display it to the user. I was doing this by using asp.net and crm sdk and I was retrieving the entity collection filtered by the user input and displaying the resultant contacts in a web page (custom aspx page outside crm). However, now the requirement is to display the contacts list within crm itself. Not in my asp.net application.
I was actually doing a similar thing of displaying a contact, by using the filter and fetching the guid of the contact and using the url
(http://server/organization/sfa/conts/edit.aspx?id=12b3bd97-57f8-e211-b4fd-000c29ea65f3).
This is fine with displaying a single contact. I was displaying all the contacts using the url
(http://server/organization/main.aspx?etc=2&etn=contact&extraqs=%3fpagemode%3diframe%26sitemappath%3dWorkplace%257cCustomers%257cnav_conts&pagetype=entitylist&viewid=%7b00000000-0000-0000-00AA-000010001004%7d&viewtype=1039).
Now the question is how can I open a similar form that displays only filtered contacts? Is there an in built form to fulfill my requirement? if not what I should do. I thought of creating a custom page and embedding in crm, however is it advisable in practical situations? I have this doubt because I would be installing this customization to the client servers. Therefore there is a chance that they might not allow third party customizations. I was wondering if there was any other way to do it.
An example is, when a customer calls, I use his phone number as a filter to lookup for a contact in crm and if there are many contacts associated with the number I need to display them all to the user.
I would build a custom html page.
Query the results using the OData service and display the results in a grid.
You can then add this webpage to a form or a dashboard using an IFRAME.
I've used a combination of crmfetchkit and jQGrid to implement this in the past.
http://crmfetchkit.codeplex.com/
http://www.trirand.com/blog/
Implementation is 100 percent client side javascript and works pretty well.