The accelerators provided for use with MS CRM 2011 are a starting point and are intended to modified. In CRM 4.0 we used eService, but we need to move from the eService accelerator to the new Customer Portal with the upgrade to CRM 2011.
One of the things that put me off immediately was the change in the authentication. I understand that the LiveID provides a plethora of advantages, but most companies are trying to do these types of upgrades seamlessly. If you have authentication already set up for your customers asking them to redo their authentication almost makes you look incompetent. With all of that said. I am implementing the customer portal without the LiveID authentication. This means that I skip some steps in the installation guide as they will not be relevant to my implementation.
I have the download of the customer portal on two servers. The one I have on my actual CRM server and the one I have on my web development server. Extract the contents of the cab file you have downloaded on both servers.
We start by working on the CRM server and getting the solution imported into CRM.
Using the installation guide which is under documentation in the cab file you downloaded. I am doing an On-Premise installation.
I pretty much skipped all of the prerequisites in the documentation and started with the Deployment step #1. It is pretty intuitive and I basically just followed along easily.
The import file that you will need for c. is kind of buried in the folder… \customerportal\CustomerPortal.zip\CustomerPortal\CustomerPortal\MicrosoftXrmCustomerPortal.cab which is in the extracted cab file.
Step 2 is not going to be relevant either for my implementation. The invitation process will be addressed later.
Step 3. Not as intuitive. You will need to find the Websitecopy.exe inside of the sdk that you should have also downloaded.
SDK download link http://www.microsoft.com/download/en/details.aspx?id=24004
I used the alternate approach using the GUI. and followed steps a-g. These were fairly intuitive. For my authentication I selected Integrated. I stopped at step 4 because this deals with registering your application against the WILD you would have set up, that I did not.
So right now my site has been imported into CRM and I have another version of it sitting in Dev environment on web server. You are not going to have your Customer Portal on the same server as your CRM, but you do need to get your customizations into the version on your web server. This is done with the CrmSvcUtil file inside the \customerportal\CustomerPortal.zip\CustomerPortal\CustomerPortal\CustomerPortal\crmSvcUtil
This is a command file that you can open in note pad. This command regenerates the Xrm.cs file which you will need to copy from the CRM server to the new web server where your portal will live. Open the CrmSvcUtil and remove the first line that is for online.
The one you want to use should look like this below.
$0\..\..\Microsoft.Xrm\bin\CrmSvcUtil /codeCustomization:”Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration” /out:Xrm\Xrm.cs /url:http://Crm/Contoso/XRMServices/2011/Organization.svc /domain:CONTOSO /username:administrator /password:pass@word1 /namespace:Xrm /serviceContextName:XrmServiceContext /serviceContextPrefix:Xrm
You will need to update the red items to your environment. One issue I ended up with is that this will by default this spit out everything in this file, which you will see the issue with that after you copy that file over the one in your web server project. If you have items in multiple entities you will get a lot of duplicate attributes in the get set properties area that you will need to remove or address. All of the duplicates I had were easily just removed and not needed. Problem with this approach is if I add additional custom fields and need to regenerate this file again I will have to go through that process of removal again.
Now I need to open the Customer Portal solution and to set it to work with my existing authentication I sparingly followed this blog to remove the references to the LiveID authentication.
Some of the code in the Portal had changed from when It was written, but I found I could muddle through it pretty easily.
I needed to make different changes to my web.config to use the aspNetSqlMembershipProvider . I added a new connectionstring that referenced in the following code.
I then set Directory Security to Integrated Authentication in IIS.
Now I have users already assign to users inside of my existing ASP membership. I will need to reassign those.
I created a page in Customer Portal called newuser.aspx and added the following asp:createuserwizard control.
I added this newly created page to the contact entity form as a iFrame referencing the URL in my Customer Portal site and added above the web authentication tab.
The administrator will create the new user in the wizard and simply assign the username to the contact and set the logon enabled all right there in CRM. I do not need to do anything with any of the other fields at this point. I will probably end up with an iFrame that will allow me to manage all of those items directly from the ASP Membership controls
I hate what I have done here… please reference my new post for a more streamlined contact sign up https://dorothyjarry.com/2012/04/09/ms-crm-2011-customer-portal-contact-sign-up/ it uses a workflow to send an invite and the contact creates their own credentials like the original eService
The next part is to set up the Case Access Permission, Account Access Permission and Contact Access Permission.
The system will allow you to add access to multiple account’s cases, but I have not found that it will actually display any of the cases that are not assigned to the parent account of the contact or to a contact who also has the same parent account depending on the scope of the access. I am still looking for a way to access that functionality. I feel that allowing contacts to have access to multiple cases, for instance where it is a service technician who enters cases or is a consultant that works with multiple accounts. At this time we end up with multiple contact records for the same user.
Good luck with your Customer Portal implementation and let me know if I can be assistance.