Hide a Primary Navigation link using Web Page Access Control rule in Portals in Dynamics 365

Say for e.g. we want to hide Test Page navigation link from the Portal for anonymous users and make it visible only for authenticated users.

For this we can create a Web Page Access Control Rule,

Go to Portals à Web Page Access Control Rules and create a new rule as shown below

Select the Website and the web page to be hidden.

For Right, select Restrict Read and in Web Roles add Authenticated Users Web Role.

On refreshing the portal à

For logged in user

For anonymous user

Hope it helps..

Fixed – (action:Skip) failed validation for reason code: LookupRecordNotAvailable in Configuration Migration (DataMigrationUtitliy.exe) in Dynamics 365 (CRM)

Recently while trying to migrate configuration records, we started getting warning in CRM Configuration Migration tool – “Completed importing x of x, x queued for second pass updates” for multiple entities.

Looking in the log we got the below error detail

“ImportEntity – Result: True – Entity: msdyusd_agentscriptaction – Adding msdyusd_agentscriptaction to the reprocess List as field owningbusinessunit with value aeb9a12b-dd3b-e711-80fb-5065f38b5691 – LookupEntity businessunit and Record Id dac37a7f-8e3c-e311-87f2-00155dd8d60b () – (action:Skip) failed validation for reason code: LookupRecordNotAvailable

Finally, we figured out that the records that were failing were owned by the system user, whose roles we had recently removed and had set its access mode as Administrative.

Assigning appropriate security role and setting access mode to Read-Write for that particular user, ensured that all the records that were owned by that user were migrated successfully.

The other option to fix this would be to remove those columns and add only appropriate columns while defining the schema in Configuration Migration Tool

Hope it helps..

Added support for Images for Plugin in Developer Toolkit for Dynamics 365 (CRM)

The old version of Dynamics 365 Development toolkit was not supporting registration of images, unlike previous versions of Developer Toolkit.

https://nishantrana.me/2016/12/21/not-able-to-register-image-for-plugin-in-microsoft-dynamics-365-developer-toolkit-public-beta-1/

However, in the new version of Developer Toolkit the support has been added.

https://marketplace.visualstudio.com/items?itemName=DynamicsCRMPG.MicrosoftDynamicsCRMDeveloperToolkit

In our CRM Explorer, once we have created a plugin, we can go Plug-In assemblies option in the navigation, select our plugin’s step and can add image.

This as expected updates the RegisterFile.crmregister file as well.

Hope it helps..

Sample code to retrieve more than 5000 records using FetchXML in CRM

Hi,

Sharing a sample code to retrieve more than 5000 records using the Fetch XML.

Version 1 :


private List<Entity> GetTotalRecordsfromFetch(string fetchXML, IOrganizationService orgService)
{
List<Entity> lstEntity = new List<Entity>();

int fetchCount = 5000;
int pageNumber = 1;
string pagingCookie = null;

while (true)
{
// Build fetchXml string with the placeholders.
string xml = this.CreateXml(fetchXML, pagingCookie, pageNumber, fetchCount);
RetrieveMultipleRequest fetchRequest = new RetrieveMultipleRequest
{
Query = new FetchExpression(xml)
};

var returnCollections = ((RetrieveMultipleResponse)orgService.Execute(fetchRequest)).EntityCollection;

if (returnCollections.Entities.Count >= 1)
{
lstEntity.AddRange(returnCollections.Entities);
}

if (returnCollections.MoreRecords)
{
pageNumber++;

results.pagingCookie = returnCollections.PagingCookie;
}
else
{
// If no more records in the result nodes, exit the loop.
break;
}
}

return lstEntity;
}

public string CreateXml(string xml, string cookie, int page, int count)
{
StringReader stringReader = new StringReader(xml);
XmlTextReader reader = new XmlTextReader(stringReader);

XmlDocument doc = new XmlDocument();
doc.Load(reader);

XmlAttributeCollection attrs = doc.DocumentElement.Attributes;

if (cookie != null)
{
XmlAttribute pagingAttr = doc.CreateAttribute("paging-cookie");
pagingAttr.Value = cookie;
attrs.Append(pagingAttr);
}

XmlAttribute pageAttr = doc.CreateAttribute("page");
pageAttr.Value = System.Convert.ToString(page);
attrs.Append(pageAttr);

XmlAttribute countAttr = doc.CreateAttribute("count");
countAttr.Value = System.Convert.ToString(count);
attrs.Append(countAttr);

StringBuilder sb = new StringBuilder(1024);
StringWriter stringWriter = new StringWriter(sb);

XmlTextWriter writer = new XmlTextWriter(stringWriter);
doc.WriteTo(writer);
writer.Close();

return sb.ToString();
}

Version 2 :


private static List<Entity> GetTotalRecordsFetchXML(OrganizationServiceProxy orgProxy, string fetchXML)
{
XDocument xDocument = XDocument.Parse(fetchXML);
var fetchXmlEntity = xDocument.Root.Element("entity").ToString();

EntityCollection entityColl = new EntityCollection();
List<Entity> lstEntity = new List<Entity>();
int page = 1;
do
{

entityColl = orgProxy.RetrieveMultiple(new FetchExpression(
string.Format("<fetch version='1.0' page='{1}' paging-cookie='{0}'>" + fetchXmlEntity + "</fetch>",
SecurityElement.Escape(entityColl.PagingCookie), page++)));

lstEntity.AddRange(entityColl.Entities);
}
while (entityColl.MoreRecords);

return lstEntity;
}

Hope it helps..

List is Locked. Cannot perform this action error while trying to remove marketing list member using RemoveMemberListRequest in Dynamics 365 (CRM)

Recently we got the below error while trying to remove the marketing list member from a marketing list.

This occurs if the marketing list is locked. The marketing list gets locked if it is Dynamic Marketing List. However, we are getting this issue on our Static marketing lists. Later we realized that those static marketing lists were created using Copy To Static ribbon button. When a Dynamic Marketing List is created the locked field value is false. However it gets set as true when we convert it to Static using Copy To Static functionality.

Changing the Locked field value as No fixed the issue.

Hope this helps..

Key not valid for use in specified state while using Configuration Manager in Dynamics 365

While trying to login in Configuration Migration (DataMigrationUtility.exe), we were getting the below error in the log file.

CM

The tool was working fine from one machine but giving an error in other. As suggested in some forum, deleting the LiveDeviceId.xml also didn’t fix the issue.

The way we got it working was to download the latest version of SDK and running the tool from there.

Missing RemoveListMembersListRequest in CRM.

In one of our recent implementations, we were working with Marketing List which could be in millions.

So we had the recent request wherein we split the marketing list into groups.

For adding members to a marketing list we have the following request

AddListMembersListRequest 

https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.addlistmemberslistrequest.aspx

which is quite efficient as we can add multiple members in a single request.

However, when it comes to removing a member from marketing, we do not have a corresponding Remove request like RemoveListMembersListRequest.

https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.removememberlistrequest.aspx

We only have RemoveMemberListRequest, which only removes 1 member at a time, which is highly inefficient when we are taking in consideration large number of records.

Kindly vote up for this idea !!

https://ideas.dynamics.com/ideas/dynamics-crm/ID0002529

More details

https://social.microsoft.com/Forums/en-US/5d700a43-0c57-4a47-9c8e-192c70d30a2d/removememberlistrequest-causes-sql-timeout-error?forum=crmdevelopment

Using Shared Mailbox and Queue in CRM for implementing generic email address in Dynamics 365 and Exchange Online.

Recently, we had a requirement to send email to customers using a generic email address like donotreply@domain.com from Dynamics CRM (& Exchange Online).

The way we can implement this is through Shared Mailbox and Queue in CRM Online.

Log in to the Administration Portal

https://portal.office.com/adminportal/home#/homepage

Select Shared mailboxes

Members can be added to the Shared Mailbox

Now back in CRM assign the email id to a particular queue.

Now sending an email activity with From as Queue and to as one of the user inside CRM.

Open the user’s mail box.

Make sure we have done Test and Enabled Mailbox for the Shared Email Box and have set Incoming and Outgoing Email as Server-Side Synchronization.

Hope it helps..

Dynamics 365 – The Next Release – July Update (v9.0)

July Update for Dynamics 365 – Highlights

Greg Olsen - Yellow Duck Guy -

Last week I joined the Dynamics 365 Executive Briefing sessions that gave us a glimpse of the next release of Dynamics 365. This release would also be referred to as the July Update for Dynamics 365. This release would be known as version 9.0.

From these sessions, I decided to collate a collection of slides as my HIGHLIGHTS of the content that was shared. Trying to condense 3 days of content was a tough ask. Therefore I added content where I thought it was relevant or quick to do.

Find below my highlights of the 3 day Dynamics 365 Executive Briefing.

JulyUpdate

You can download my Highlights PowerPoint slide deck using the below.

https://app.box.com/s/6pm1xjj9bna1anlfzz9e2d1hw3hmiyt3

Enjoy!

Greg Olsen
YellowDuckGuy

View original post