<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mohamed Ibrahim Mostafa&#039;s Blog &#187; Dynamics</title>
	<atom:link href="http://www.mohamedibrahim.net/blog/tag/dynamics/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mohamedibrahim.net/blog</link>
	<description>Technical issues, problems, errors, findings &#38; resolutions covering Microsoft Dynamics CRM, software development, Microsoft .NET, C#, VB.NET, Commerce Server, Integration, E-Commerce, Scribe, Online shops and more general technology and consultancy posts.</description>
	<lastBuildDate>Tue, 24 Aug 2010 09:22:45 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Get Current User Security Roles in Microsoft Dynamics CRM 4.0 on client side using JavaScript calls to CRM Service &amp; API</title>
		<link>http://www.mohamedibrahim.net/blog/2010/07/27/get-current-user-security-roles-in-microsoft-dynamics-crm-4-0-on-client-side-using-javascript-calls-to-crm-service-api/</link>
		<comments>http://www.mohamedibrahim.net/blog/2010/07/27/get-current-user-security-roles-in-microsoft-dynamics-crm-4-0-on-client-side-using-javascript-calls-to-crm-service-api/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 15:18:16 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[CRM Service]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Service Call]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=247</guid>
		<description><![CDATA[In Microsoft Dynamics CRM 4.0, it is quite common that you want to call the CRM service from client side: i.e. Call the CRM service using JavaScript code that is located on the OnLoad, OnSave or OnChange events on a Dynamics CRM entity or field event.
The most common call is the call to CRM service to [...]]]></description>
			<content:encoded><![CDATA[<p>In Microsoft Dynamics CRM 4.0, it is quite common that you want to call the CRM service from client side: i.e. Call the CRM service using JavaScript code that is located on the OnLoad, OnSave or OnChange events on a Dynamics CRM entity or field event.</p>
<p>The most common call is the call to CRM service to determine what roles the current user has.</p>
<p>The following function returns all roles of a specific user by creating a SOAP message request to the CRM Service:</p>
<pre>//*********************
function GetCurrentUserRoles()
{
 var xml = "" +
 "&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;" +
 "&lt;soap:Envelope xmlns:soap=\"<a href="http://schemas.xmlsoap.org/soap/envelope/\">http://schemas.xmlsoap.org/soap/envelope/\</a>" " +
 " xmlns:xsi=\"<a href="http://www.w3.org/2001/XMLSchema-instance\">http://www.w3.org/2001/XMLSchema-instance\</a>" xmlns:xsd=\"<a href="http://www.w3.org/2001/XMLSchema\">http://www.w3.org/2001/XMLSchema\</a>"&gt;" +
 GenerateAuthenticationHeader() +
 " &lt;soap:Body&gt;" +
 " &lt;RetrieveMultiple xmlns=\"<a href="http://schemas.microsoft.com/crm/2007/WebServices\">http://schemas.microsoft.com/crm/2007/WebServices\</a>"&gt;" +
 " &lt;query xmlns:q1=\"<a href="http://schemas.microsoft.com/crm/2006/Query\">http://schemas.microsoft.com/crm/2006/Query\</a>" xsi:type=\"q1:QueryExpression\"&gt;" +
 " &lt;q1:EntityName&gt;role&lt;/q1:EntityName&gt;" +
 " &lt;q1:ColumnSet xsi:type=\"q1:ColumnSet\"&gt;" +
 " &lt;q1:Attributes&gt;" +
 " &lt;q1:Attribute&gt;name&lt;/q1:Attribute&gt;" +
 " &lt;/q1:Attributes&gt;" +
 " &lt;/q1:ColumnSet&gt;" +
 " &lt;q1:Distinct&gt;false&lt;/q1:Distinct&gt;" +
 " &lt;q1:LinkEntities&gt;" +
 " &lt;q1:LinkEntity&gt;" +
 " &lt;q1:LinkFromAttributeName&gt;roleid&lt;/q1:LinkFromAttributeName&gt;" +
 " &lt;q1:LinkFromEntityName&gt;role&lt;/q1:LinkFromEntityName&gt;" +
 " &lt;q1:LinkToEntityName&gt;systemuserroles&lt;/q1:LinkToEntityName&gt;" +
 " &lt;q1:LinkToAttributeName&gt;roleid&lt;/q1:LinkToAttributeName&gt;" +
 " &lt;q1:JoinOperator&gt;Inner&lt;/q1:JoinOperator&gt;" +
 " &lt;q1:LinkEntities&gt;" +
 " &lt;q1:LinkEntity&gt;" +
 " &lt;q1:LinkFromAttributeName&gt;systemuserid&lt;/q1:LinkFromAttributeName&gt;" +
 " &lt;q1:LinkFromEntityName&gt;systemuserroles&lt;/q1:LinkFromEntityName&gt;" +
 " &lt;q1:LinkToEntityName&gt;systemuser&lt;/q1:LinkToEntityName&gt;" +
 " &lt;q1:LinkToAttributeName&gt;systemuserid&lt;/q1:LinkToAttributeName&gt;" +
 " &lt;q1:JoinOperator&gt;Inner&lt;/q1:JoinOperator&gt;" +
 " &lt;q1:LinkCriteria&gt;" +
 " &lt;q1:FilterOperator&gt;And&lt;/q1:FilterOperator&gt;" +
 " &lt;q1:Conditions&gt;" +
 " &lt;q1:Condition&gt;" +
 " &lt;q1:AttributeName&gt;systemuserid&lt;/q1:AttributeName&gt;" +
 " &lt;q1:Operator&gt;EqualUserId&lt;/q1:Operator&gt;" +
 " &lt;/q1:Condition&gt;" +
 " &lt;/q1:Conditions&gt;" +
 " &lt;/q1:LinkCriteria&gt;" +
 " &lt;/q1:LinkEntity&gt;" +
 " &lt;/q1:LinkEntities&gt;" +
 " &lt;/q1:LinkEntity&gt;" +
 " &lt;/q1:LinkEntities&gt;" +
 " &lt;/query&gt;" +
 " &lt;/RetrieveMultiple&gt;" +
 " &lt;/soap:Body&gt;" +
 "&lt;/soap:Envelope&gt;" +
 "";

 var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
 xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
 xmlHttpRequest.setRequestHeader("SOAPAction"," <a href="http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple">http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple</a>");
 xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
 xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
 xmlHttpRequest.send(xml);

 var resultXml = xmlHttpRequest.responseXML;
 return(resultXml);
}
//*********************</pre>
<p> The following function checks if the specified user has a specified user role:</p>
<pre>//*********************
function UserHasRole(roleName) {
    //get Current User Roles, oXml is an object
    var oXml = GetCurrentUserRoles();
    if (oXml != null) {
        //select the node text
        var roles = oXml.selectNodes("//BusinessEntity/q1:name");
        if (roles != null) {
            for (i = 0; i &lt; roles.length; i++) {
                if (roles[i].text == roleName) {
                    //return true if user has this role
                    return true;
                }
            }
        }
    }
    //otherwise return false
    return false;
}
//*********************</pre>
<p>The following code block uses the above function to do some logic based on user&#8217;s security roles:</p>
<pre>if(UserHasRole("System Administrator"))
{
  //do something
}
else
{
   //do something else
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2010/07/27/get-current-user-security-roles-in-microsoft-dynamics-crm-4-0-on-client-side-using-javascript-calls-to-crm-service-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Dynamics CRM 4 field level validation using javascript regular expression on client side handling the onChange event to validate and check the value and text of a CRM 4.0 field</title>
		<link>http://www.mohamedibrahim.net/blog/2010/04/14/microsoft-dynamics-crm-4-field-level-validation-using-javascript-regular-expression-on-client-side-handling-the-onchange-event-to-validate-and-check-the-value-and-text-of-a-crm-40-field/</link>
		<comments>http://www.mohamedibrahim.net/blog/2010/04/14/microsoft-dynamics-crm-4-field-level-validation-using-javascript-regular-expression-on-client-side-handling-the-onchange-event-to-validate-and-check-the-value-and-text-of-a-crm-40-field/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 01:21:41 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[General Development]]></category>
		<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=184</guid>
		<description><![CDATA[Please note that this post is aimed as showing how to use javascript regular expression field level validation in Microsoft Dynamics CRM. The post does not focus on the many ways of getting a regular expression. The example regular expression below is used for explanation only.
If you want to create validation at field level in [...]]]></description>
			<content:encoded><![CDATA[<p>Please note that this post is aimed as showing how to use javascript regular expression field level validation in Microsoft Dynamics CRM. The post does not focus on the many ways of getting a regular expression. The example regular expression below is used for explanation only.</p>
<p>If you want to create validation at field level in Microsoft Dynamics CRM 4 to check the input value and text of a CRM field in an entity form, you can do this using regular expressions written in javascript code that handles the on change (onChange) event of this field at client side.</p>
<p>Below is an example of a regular expression but you might want to use your own regex value or search online for almost unlimited number of regular expressions that do just about anything.</p>
<p>For example, if you want to validate a CRM 4 field so that only a 4 digit year value starting from year 1980 is entered in the field text box, follow the following steps:</p>
<p>- Open the entity customisation form<br />
- select the field you want to validate using javascript regular expression.<br />
- Click on field properties, events tab and then open the onChange event.<br />
- In the onChange event type the following javascript code (script) to handle the event and implement the field level validation:</p>
<pre>//-----------------------------
//Regular expression ensuring a 4 digit year value is input starting from year 1980.
var reDate =/^(([1]{1}[9]{1}[8-9]{1}\d{1})|([2-9]{1}\d{3}))$/</pre>
<pre>//Check if the input value satisfies the regular expression condition
if (document.crmForm.all.new_yearfieldname.value.search(reDate)==-1)
{//if match failed
alert("Please enter a valid year value. Year value must be four digits starting from the year 1980")
crmForm.all.new_yearfieldname.value = '';
}
//-----------------</pre>
<p>Another way of doing this is as follows;</p>
<pre><span style="font-family: Georgia;">//-----------------------------
var regexS = "^(([1]{1}[9]{1}[8-9]{1}\d{1})|([2-9]{1}\d{3}))$"; 
var regex = new RegExp( regexS ); 
var results = regex.exec( crmForm.all.new_yearfieldname.value);
if( results == null )   
{//if match failed
alert("Please enter a valid year value. Year value must be four digits starting from the year 1980")
crmForm.all.new_yearfieldname.value = '';
}
//-----------------------------</span></pre>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2010/04/14/microsoft-dynamics-crm-4-field-level-validation-using-javascript-regular-expression-on-client-side-handling-the-onchange-event-to-validate-and-check-the-value-and-text-of-a-crm-40-field/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Methods to Bulk Delete Microsoft Dynamics CRM records and Using Scribe Insight to perform a Bulk Delete of all CRM records.</title>
		<link>http://www.mohamedibrahim.net/blog/2009/09/23/microsoft-dynamics-crm-bulk-delete-methods-using-scribe-insight-for-bulk-delete-dynamics-crm-records/</link>
		<comments>http://www.mohamedibrahim.net/blog/2009/09/23/microsoft-dynamics-crm-bulk-delete-methods-using-scribe-insight-for-bulk-delete-dynamics-crm-records/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 18:24:03 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[Integration]]></category>
		<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[Field]]></category>
		<category><![CDATA[SCRIBE]]></category>
		<category><![CDATA[Scribe CRM Adaptor]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=117</guid>
		<description><![CDATA[I&#8217;m sure many people needed to do a bulk delete operation on Microsoft Dynamics CRM 4.0. You may have uploaded thousands of records from an imported file or migrated them through Scribe or even used a .NET application to mass create records.
Unfortunately, and as far as I can see, there is no straight forward way [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure many people needed to do a bulk delete operation on Microsoft Dynamics CRM 4.0. You may have uploaded thousands of records from an imported file or migrated them through Scribe or even used a .NET application to mass create records.</p>
<p>Unfortunately, and as far as I can see, there is no straight forward way to do bulk records deletion on Dynamics CRM 4.0 using the out of the box functionality and interface of Dynamics CRM 4.0.</p>
<p>To bulk delete records in Dynamics CRM 4.0, you have the following main options:</p>
<ul>
<li>Get a third party tool or CRM add-on to bulk delete records. This option is a straight forward one but you might have to pay for purchasing or using the tool. It may also have security issues. I would not recommend it to my clients as most probably the tool is created by a small company or an individual which I don&#8217;t know. Hence, it will be rather difficult to put this tool on a live Production environment or client server. Let alone adding it to CRM Online or to a CRM hosted solution by a partner.</li>
<li>Use CRM SDK to write a .NET application (or a .NET console application) that will run and delete all records for a specified entity or entities. This is a more robust way of doing it, but it may take longer time and is probably not suitable for people who do not come from .NET development background.</li>
<li>Use Scribe Insight. This is what this post is about really.. Using Scribe Insight to bulk Delete Dynamics CRM records.</li>
</ul>
<p>Please Note: This is a work around. It is not supported by Scribe and the advice in this post is provided as is with no warranty. I have tried it and it works perfectly but can not guarantee it will have the same acceptable results in any other environment.</p>
<p>Here is what you need to do:</p>
<ol>
<li>Create a new Scribe workbench DTS (or Job). Point to your usual source file (even a sample one) and point to CRM: either IFD Forms for hosted CRM or direct connection.</li>
<li>Configure the targe: Create one delete step on the target.</li>
<li>Make sure that the option to &#8220;Allow multiple record matches on updates/deletes&#8221; is ticked under the All steps tab.</li>
<li>Under Step control tab, leave failure to go to next row but change all the success records (Success (0), Success (1) and Success (&gt;1) ) to End Job. Select success radio button at the bottom and write a message to your log such as: &#8220;All records Deleted&#8221;.</li>
<li>No Data links are important as you are only deleting.</li>
<li>On the Lookup link, just make the lookup condition impossible. Such as: where Account Name = 123456789 or whatever.</li>
<li>Run the DTS.</li>
</ol>
<p>The Job will read the first source line. Will then try to find this record at the target (remember it is update/delete). Since we have setup the lookup link to look for something &#8220;impossible to find&#8221;, the result of the update will be Success (0).</p>
<p>Once this happens, Scribe will go and delete all records for your chosen entity (or CRM table). This will be a complete bulk delete of all CRM records using Scribe.</p>
<p>Remember, it&#8217;s a work around&#8230; that works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2009/09/23/microsoft-dynamics-crm-bulk-delete-methods-using-scribe-insight-for-bulk-delete-dynamics-crm-records/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiding Left Navigation Menu Items in an Entity Form using Javascript in Microsoft CRM 4</title>
		<link>http://www.mohamedibrahim.net/blog/2009/07/31/hiding-left-navigation-menu-items-in-an-entity-form-using-javascript-in-microsoft-crm-4/</link>
		<comments>http://www.mohamedibrahim.net/blog/2009/07/31/hiding-left-navigation-menu-items-in-an-entity-form-using-javascript-in-microsoft-crm-4/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 10:01:56 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[Entity]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Relationship]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=72</guid>
		<description><![CDATA[This is just a follow on from my previous post (http://www.mohamedibrahim.net/blog/2009/07/30/renaming-left-menu-items-leftnav-entity-microsoft-dynamics-crm-4/). In this post, I explained how to rename left menu items in an entity form using javascript.
These links are created when a new N:1 relationship is created between two entities. The primary entity in this relationship will get a new left navigation link everytime a [...]]]></description>
			<content:encoded><![CDATA[<p>This is just a follow on from my previous post (<a href="http://www.mohamedibrahim.net/blog/2009/07/30/renaming-left-menu-items-leftnav-entity-microsoft-dynamics-crm-4/">http://www.mohamedibrahim.net/blog/2009/07/30/renaming-left-menu-items-leftnav-entity-microsoft-dynamics-crm-4/</a>). In this post, I explained how to rename left menu items in an entity form using javascript.</p>
<p>These links are created when a new N:1 relationship is created between two entities. The primary entity in this relationship will get a new left navigation link everytime a new N:1 relationship is created.</p>
<p>We have discussed in the previous post that the code to rename left menu navigation items (links to other N:1 entities) is:</p>
<p>var navItem = document.getElementById(’leftNavMenuItemID’);<br />
navItem.innerHTML = navItem.innerHTML.replace(’&gt;CurrentLinkValue’,&#8217;&gt;NewLinkValue’);</p>
<p>So for example:</p>
<p>var navLeftItem = document.getElementById(’navContactsMenuItem’); // this will look for the element contact in the left menu of an account form<br />
navLeftItem .innerHTML = navItem.innerHTML.replace(’&gt;Contacts’,&#8217;&gt;Employees’); //This will rename Contacts to Employees in the Account form</p>
<p><strong><em>Now,</em></strong> to Hide specific links in the left menu, you can use the following script:</p>
<p>// Hide left menu navigation links on an entity form<br />
var navLeftItem = document.getElementById(’navContactsMenuItem’);<br />
navLeftItem .style.display = &#8216;none&#8217;;</p>
<p>This script will be in the OnLoad event of the form of the entity that you want to hide links created on the left handside of this entity form.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2009/07/31/hiding-left-navigation-menu-items-in-an-entity-form-using-javascript-in-microsoft-crm-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Microsoft CRM Internet Facing Deployment IFD with Multiple organisations</title>
		<link>http://www.mohamedibrahim.net/blog/2009/07/18/setting-up-microsoft-crm-internet-facing-deployment-ifd-with-multiple-organisations/</link>
		<comments>http://www.mohamedibrahim.net/blog/2009/07/18/setting-up-microsoft-crm-internet-facing-deployment-ifd-with-multiple-organisations/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 11:17:56 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[external address]]></category>
		<category><![CDATA[IFD]]></category>
		<category><![CDATA[IFD Tool]]></category>
		<category><![CDATA[Internal Address]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Internet Facing Deployment]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=53</guid>
		<description><![CDATA[You can always setup Microsoft Dynamics CRM with Internet Facing deployment IFD either using the IFD tool by Microsoft or using the manual hard coding in the config files. I have recently used the IFD tool to do so and after I managed to get everything sorted, an important question came to mind which is: How [...]]]></description>
			<content:encoded><![CDATA[<p>You can always setup Microsoft Dynamics CRM with Internet Facing deployment IFD either using the IFD tool by Microsoft or using the manual hard coding in the config files. I have recently used the IFD tool to do so and after I managed to get everything sorted, an important question came to mind which is: How can we setup Microsoft Dynamics CRM with Internet Facing deployment and at the same time allowing the external (Internet) access to all the CRM server organisations. So for example, if you have 3 CRM organisations (organizations) and you expose your Dynamics CRM server to external access via the Internet, you will usually have one domain name and one IP address for this server. So <a href="http://www.yourcrmserverdomain.com">www.yourcrmserverdomain.com</a> points to an IP address of 91.91.91.91 and this IP address is the real IP address of your Microsoft Dynamics CRM server. How can you make this point to different organisations all setup on the same server and the same CRM server.</p>
<p>I did search quite a lot on google, I have to say to find the answer as I was away from my server to try it myself one and I could not find a post or an article discussing it. This is probably because it is either too simple for everyone (although it didn&#8217;t seem that simple to me) or may be because I am useless in searching using the right keywords.</p>
<p>Anyway, the answer I found was very simple, although it might seem to some people (like me) as a potential issue because you have one server in IIS and you don&#8217;t have clear folder categorisation for each organisation to allow you to point different domains to different folders in the same CRM IIS node. Simply all you need to do is to direct the user to the server URL and then follow this with the organisation name.</p>
<p>So to point your external CRM users to organsiation 1, point these external users to go to <a href="http://www.yourcrmserverdomain.com/organisation1">www.yourcrmserverdomain.com/organisation1</a>. And for example, for Organisation 2, <a href="http://www.yourcrmserverdomain.com/organisation2">www.yourcrmserverdomain.com/organisation2</a>, and so on.. The default organisation can be accessed directly by using your CRM server URL (for ex: <a href="http://www.yourcrmserverdomain.com">www.yourcrmserverdomain.com</a>) or by the url <a href="http://www.yourcrmserverdomain.com/organisation1">www.yourcrmserverdomain.com/organisation1</a> (in case the default organisation is called organisation1). Both will work</p>
<p>Substitute the domain name, organisation 1 and organisation 2 with your actual domain and organisation names.</p>
<p>Please feel free to contact me if you have any questions.</p>
<p>Thanks,</p>
<p>Mohamed</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2009/07/18/setting-up-microsoft-crm-internet-facing-deployment-ifd-with-multiple-organisations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft CRM 4.0 IFD Internet Facing Deployment (IFD) Internal Network address and subnet mask list of IP addresses.</title>
		<link>http://www.mohamedibrahim.net/blog/2009/07/10/microsoft-crm-40-ifd-internet-facing-deployment-ifd-internal-network-address-subnet-mask-list-ip-addresses/</link>
		<comments>http://www.mohamedibrahim.net/blog/2009/07/10/microsoft-crm-40-ifd-internet-facing-deployment-ifd-internal-network-address-subnet-mask-list-ip-addresses/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 10:54:29 +0000</pubDate>
		<dc:creator>Mohamed Ibrahim Mostafa</dc:creator>
				<category><![CDATA[Microsoft Dynamics CRM]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Dynamics]]></category>
		<category><![CDATA[IFD]]></category>
		<category><![CDATA[IFD Tool]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Internal Address]]></category>
		<category><![CDATA[Internet Facing Deployment]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Subnet mask]]></category>

		<guid isPermaLink="false">http://www.mohamedibrahim.net/blog/?p=48</guid>
		<description><![CDATA[Hi,
I have been working on setting up a test Microsoft dynamics CRM server on a server at home with Internet facing deployment. I wanted to try to see how CRM hosted will work. I have been through few issues that thankfully I managed to resolve them all. I will write another post specifically focusing on the [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>I have been working on setting up a test Microsoft dynamics CRM server on a server at home with Internet facing deployment. I wanted to try to see how CRM hosted will work. I have been through few issues that thankfully I managed to resolve them all. I will write another post specifically focusing on the deployment and IFD but for now, I want to focus on a quick issue that I had.</p>
<p>After the Microsoft Dynamics CRM was setup fine, I used the IFD tool (available free on Microsoft downloads website) to allow the Internet facing feature for the CRM server. On the IFD tool there is a list of machines that you can tell the IFD tool about. This is called &#8220;IFD Internal Network Address and Subnet Mask&#8221;.  The first thing that came to mind on seeing this is that it is for the internal computers that are allowed access to the server. Reading through the IFD documentation, I found out that it is actually the opposite. This list of machines IPs is the list of IPs for computers which are <strong><em>not</em></strong> allowed access to the Dynamics CRM server <strong>from the Internet (IFD)</strong>. i.e. Any computer with an IP in this list, it will only be allowed to connect to the CRM server internally but if you attempt to access CRM Server externally from this machine, it will not even get to the authentication form.</p>
<p>So assume you added to this list in the IFD tool a computer with IP 192.168.1.88.</p>
<p>If you attempt to connect with this machine to the Dynamics CRM server using the internal address for example: <a href="http://localhost/CRM/">http://localhost/CRM/</a>, this will work find.</p>
<p>But if you attempt to connect from this machine to the CRM server using the external address: <a href="http://www.yourcrmserverdomainname.com/">http://www.yourcrmserverdomainname.com/</a> then this will <strong>NOT</strong> work.</p>
<p>I would refer to this list as the internal addresses banned from accessing the dynamics CRM server externally.</p>
<p>I had this issue and I was trying to access the CRM server externally with another machine at home but I wasn&#8217;t able to and then I found out that I should actually remove this machine&#8217;s IP address from the list in order to be able to access it.</p>
<p>Hope this will ever help someone!</p>
<p>Mohamed Ibrahim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mohamedibrahim.net/blog/2009/07/10/microsoft-crm-40-ifd-internet-facing-deployment-ifd-internal-network-address-subnet-mask-list-ip-addresses/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
