CRM 2011 Customer Portal: Adding Paging and Sorting to Caseview

A Customer Portal is only as good as it is User/Customer Friendly.  One of the things that I have been asked is… Can you add sorting and paging to the case view?  No matter how you sort the result set some one will want it sorted differently.  The most user-friendly way to present a list is to allow on sorting by the user.

You will need to make changes to the viewcases.aspx page as well as the code behind for that page.

you will need to add the reference to the

using System.Data;

Then you need to add these three sorting and paging functions.  For the caseview you should be able to straight copy and past.  If you are using this for another view you will need to update CaseList to the name of your gridview and change the names of the functions in the next code chunk.


protected void CaseList_PageIndexChanging(object sender, GridViewPageEventArgs e)
 {
 CaseList.PageIndex = e.NewPageIndex; CaseList.DataBind();
 }
 protected void CaseList_Sorting(object sender, GridViewSortEventArgs e)
 {
 DataTable dtSortTable = CaseList.DataSource as DataTable;
 if (dtSortTable != null)
 { DataView dvSortedView = new DataView(dtSortTable);
 dvSortedView.Sort = e.SortExpression + " " + getSortDirectionString(e.SortDirection);
 CaseList.DataSource = dvSortedView; CaseList.DataBind();
 }
 }
 private string getSortDirectionString(SortDirection sortDirection)
 {
 string sortExpression = ViewState["SortExpression"] as string;
 newSortDirection = "ASC";
 string lastDirection = ViewState["SortDirection"] as string;
 if ((lastDirection != null) && (lastDirection == "ASC"))
 {
 newSortDirection = "DESC";
 }
 ViewState["SortDirection"] = newSortDirection;
 return newSortDirection;
 }

The gridview tag on the aspx page should look like this.  The red is what needs to be added.

<asp:<span class="hiddenSpellError">GridView ID="CaseList" runat="server" CssClass="cases" <span style="color: #ff0000;">OnPageIndexChanging="CaseList_PageIndexChanging"</span><span style="color: #ff0000;"> OnSorting="CaseList_Sorting" AllowPaging="true" AllowSorting="true"</span>
 OnRowDataBound="CaseList_OnRowDataBound" >
 </asp:GridView>

Now your page should have headers links and pagination like this

This same code can be used where ever you need to add sorting and paging with a gridview.

Posted in CRM 2011, Customer Portal, Dynamics | 4 Comments

Microsoft Connector V2 Upgrade GP 2010 to CRM 2011: Gotchas and Improvements

This connector version is a substantial improvement.  I will say that we are doing pretty basic integration, mostly OOB with a couple changes to the maps.  Nothing overly exciting. That is why it surprised me when we had issues with the previous connector.  The error that finally came across that i could not resolve was this

Inner Exception: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://schemas.microsoft.com/dynamics/gp/2010/01:GetCustomerByKeyResult. The InnerException message was ‘Maximum number of items that can be serialized or deserialized in an object graph is ‘65536’. Change the object graph or increase the MaxItemsInObjectGraph quota. ‘.  Please see InnerException for more details.

I scoured every config to find a place to make this change and nothing had any impact on the error.  I was able to determine what was causing the error.  On customers that have more than 1000 customer addresses.  Because I am planning to integrate sales orders and invoices this was a real issue.  Believe it or not we do have several customers with this being the case and they of course are the biggest customers we have. I posted to the forum and was told I needed to upgrade to V2 and because I was on Feature pack 6 it should go smoothly.  And it did with these few little things listed below.  The good news is this did in fact fix the error above.  YAY

So here is how the upgrade went

The first error I came to was the the server could not find the Microsoft.IdentityModel.dll when attempting to connect to the CRM service.  After checking and rechecking the crm server for the dll, I realized you have to install the WIF on your gp server that will be hosting the connector V2.  This was not an issue on the Connector feature pack 6. Once installed the error went a way and I was able to move on.

My GP server runs 2003  here is the download link

http://www.microsoft.com/en-us/download/details.aspx?id=23190

The authentication was just a little bit different for the new connector V2 adaptor for CRM 2011.  This time you do need the URL for the discovery URL.

If you have already imported the original ConnectorForMicrosoftDynamicsGp into CRM 2011 and this is an upgrade when you click on the configure the CRM utility in the connector it will error saying that there is already a unmanaged solution in your crm system and will not import it again.  Did not cause any issue.  Clicked OK and moved on.

You also HAVE to use a different integration account than the system administrator for your CRM.

Also I had said in a previous blog about the connector that I had to manually update the productnumber and inactivate the products. I have now determined why I have been having an issue with this.  When the configuration utility runs it appears to only update the current Active items.  Technically when you import your items before the new connector you were going to be bringing over all of the items both active and inactive.  When the connector tried to import one of the already inactive items it was met with…

[Sales Item to Product] has encountered an error while processing key [10090-02].
0x80043b06
The value for productnumber already exists.
Platform

With Connector V2 you can now add a filter.  I will only be pulling over active items. In our GP system that is represented by the Discontinued Product Type.   The only problem this may pose is when items are updated to discontinued they will not integrate and there for will have to be manually updated in CRM.  We do not discontinue items often so this gives me time to find a better solution for the future.

CRM Picklist Sync tool when it can not connect it will still try to sync everything.  That is a bit annoying. I always pick a small entity to run the picklist utility on first that way if I fat finger the Credentials I do not have to wait for it to go through the whole process before I can enter the correct information.

On the form to enter the credentials for the Pick List Utility it says to use the system administrator account… that is not the account to use.  You need to use the same integration account you set up to run the configuration utility or it will get an error “Unable to contact CRM Metadata Soap Client.” which is exactly the problem but not very helpful considering this was not an issue with the previous version of the crm adaptor.

Well I hope this helps anyone else who is upgrading the Dynamics Connector V2.

Adding a new piece of info.

If you get your connector set up and then need to go through the configuration utility again.  For some reason I was getting an error saying that no organizations were found.

If restating the eConnect for Microsoft Dynamics GP 2010 Integration Service does not work, try recycling the CRMApp Pool in the crm server.

If for some reason you are having an issue once you are able to connect to the organization and it seems to error out on every action.  You may need to restart the entire website too.

 

Posted in Connector for Microsoft Dynamics, CRM, CRM 2011, Dynamics, GP | 2 Comments

Connector for Microsoft Dynamics: a little story about debugging

I have been able to resolve most of the issues by using the DynamicsWebServicesExceptionsConsole but this problem was even hosing up the exception logs

“Cannot access the exception service. Verify that the configuration file exists and contains the correct path to the exception service”

So after you go looking in the Config file and realizing this was working two seconds ago…..  http://support.microsoft.com/kb/924548  Resolution 3 was the one I needed.

basically run these two queries if the first one comes back with results you need to run the second one

select * from DYNAMICS..WSExceptionLog where ExceptionMessage like ‘%invalid character%’

delete DYNAMICS..WSExceptionLog where ExceptionMessage like ‘%invalid character%’

At this point I have all my major customers failing to pull over with an error that the handy exception console can’t even help with

“‘’, hexadecimal value 0x02, is an invalid character.”

One of the ways I decided I would start debugging my final conundrum was just building a web service.   Now they give you a handy little sample in the sdk.

\SDK\SampleCode\Adapter\SampleAdapter

Copy the project to a development server and start by building the application.  Well you are missing two assemblies if this is not on the same machine as the one you installed the connector.  Go get them from that server and put them on the machine so you can reference them.

\Program Files\Microsoft Dynamics\Microsoft Dynamics Adapter

Microsoft.Dynamics.Integration.AAL.dll
Microsoft.Dynamics.Integration.Common.dll

Then you get started and build.. ok good.  run… can’t run a non executable project.  OK.

Add an executable project.  Go to file.. add… project… I just did a simple windows application with a button.  Then I added an onclick to my button and this code…

private void button1_Click(object sender, EventArgs e)
        {
            Customer customer;
            CompanyKey companykey;
            Context context;
            CustomerKey customerkey;
            DynamicsGP weDynamicsGP = new DynamicsGP();
            weDynamicsGP.UseDefaultCredentials = true;
            context = new Context();
            companykey = new CompanyKey();
            companykey.Id = (1);
            context.OrganizationKey = (OrganizationKey)companykey;
            customerkey = new CustomerKey();
            customerkey.Id = "somecustomernumber";
            customer = weDynamicsGP.GetCustomerByKey(customerkey, context);
            label1.Text = customer.Name;
        }

Obviously update the somecustomernumber to be a number in your system

This code is pulled directly from http://mbs.microsoft.com/downloads/public/gp90docs/WSProgrammersGuide.pdf

Add using to reference the non executable class.  hit run.. Ok good.. we are good… its working… wait… what? 404.

Oh right that url is probably not going to my web service url.  It’s not on the same server.  Also the url does not like to run under localhost either.  You would want to use the IP or machine name instead.

So I update my web reference and now hit with another 404..

ok! Well I am hitting the url when I add the web reference so it is a valid address, what now?  I did search for localhost in the entire solution and found several places where that needed to be updated as well.

hit run.. Insufficient authorizations… what?

Oh right, I am running this as my nt auth and that wouldn’t have permissions on the web service security console or in GP

Add my credentials as a super user and Microsoft Dynamics Integration for the company I was working with in the dynamics security console.  then hit run.. now I am getting another 404???  what?? seriously???…

So then I just start looking up web service calls and 404 on google.  Yep I do that too.  And everyone was referencing the actual “wsdl”.  That had not been mentioned in the programmer guide.   I removed my web reference and re added it with the wsdl address

http://yourservername:48620/Metadata/Legacy/Full/DynamicsGP.wsdl

Hit run and walla I was back to the condundrum that started this…

” The application encountered an unhandled system exception.  Contact your system administrator for details.”

So  essentially I built the web service in hopes of calling the customeroject and seeing what it was coughing up on, but I was back to watching profiler.  At least I did finally get a simple web service up and running.

Watching profiler I see that same little proc go across exec eConnectOut that I have tried to look at and it is on total lock down.

full proc from profiler:
declare @p40 int
set @p40=0
exec eConnectOut
@I_vDOCTYPE=’WSCustomer’,@I_vOUTPUTTYPE=2,@I_vINDEX1TO=’300956′,@I_vINDEX2TO=default,@I_vINDEX3TO=default,@I_vINDEX4TO=default,
@I_vINDEX5TO=default,@I_vINDEX6TO=default,@I_vINDEX7TO=default,@I_vINDEX8TO=default,@I_vINDEX9TO=default,@I_vINDEX10TO=default,
@I_vINDEX11TO=default,@I_vINDEX12TO=default,@I_vINDEX13TO=default,@I_vINDEX14TO=default,@I_vINDEX15TO=default,@I_vINDEX1FROM=’300956′,
@I_vINDEX2FROM=default,@I_vINDEX3FROM=default,@I_vINDEX4FROM=default,@I_vINDEX5FROM=default,@I_vINDEX6FROM=default,@I_vINDEX7FROM=default,
@I_vINDEX8FROM=default,@I_vINDEX9FROM=default,@I_vINDEX10FROM=default,@I_vINDEX11FROM=default,@I_vINDEX12FROM=default,@I_vINDEX13FROM=default,
@I_vINDEX14FROM=default,@I_vINDEX15FROM=default,@I_vFORLOAD=default,@I_vFORLIST=1,@I_vACTION=default,@I_vROWCOUNT=1000,@I_vREMOVE=default,
@I_vDATE1=default,@I_vWhereClause=default,@O_iErrorState=@p40
output
select @p40

I ran it… well executed it in sql.  Sure enough it brought back the straight xml before any of the little applications could get hung up on what ever this was… so I scroll through the data, excited.  I finally found it what I have been looking for the  data raw as it is going over.

Then I see the problem.   ‘  yep a single quote in an open text field in gp coming across through the adaptor is causing all of these problems.

So now for the fix I went with.. This is probably completely unsupported, but I need to get this done and after going through all of the Programmer guides, searching all over, it appears this is an issue with the Web Services.   The connector uses WebServices which in turn uses eConnect.   The Notes field in GP allows for special characters and eConnect does not.  Now if I had access to the XML prior to being created (and I am sure I do somewhere) I could just add the

<!--[CDATA[ ]]>

as it states in the eConnect Programmers Guide.  Based on the time constraint I looked in the eConnect_output_Setup table for the doctype that was being passed and it was there “wsCustomer”  I looked for the JOINTABE SY03900 and of course it was not there.  When I installed the GP Web Services which is what the Connector uses it created some Procs, views, and tables in the database.  One of those is ReqRMCustomer.  I modified it by changing  dbo.SY03900.TXTFIELD to  ” AS ‘TXTFIELD’  this will keep the join just in case it is referenced somewhere I don’t know about but will pass a space across for the Notes field.  I do understand that this may cause issues in the future if I want to use Web Services to pull over my Customer with the notes field and I would need to undo the change and come up with another way.

Now after displaying my hack fix, if anyone has an alternative solution please let me know.

Posted in Connector for Microsoft Dynamics, CRM, Dynamics, GP | 3 Comments

CRM 40 to CRM 2011 After Testing Now what: Re-Import

So the only thing that I have been truly disappointed in with the upgrade is the effort involved in getting the data from your current system integrated into the new CRM 2011.  I have been calling this process the Re-Import solution.  Now every time I do this I come up with some other little hiccup.  At this point I am just hoping that I get all the hiccups out before the big go live.

Before I start anything I take a snapshot of the VM.

Export customizations:

Start by going into customizations and exporting all customizations, click on Information and Export Solution. Publish All customizations on the first page. then click next. I have not been including any of the Export System Settings. Then click next and wait a save screen will eventually come up. I have a folder on my desktop that I use called customizations.

If you are using the Customer Portal and have made any changes…run the websitecopy tool

Source will be CRM server

set your integration type and enter the url of your CRM server

after it connects select your organization and connect then click close unless you need the connection string… if you have already copied it, it does not change

upon clicking close select the Source of the Website which should be populated with :Customer Portal unless you changed the name

Change the destination to XML file ( I copied the original one, changed the name and saved over it)

Website name: leave the same this is just to get your changes to pull them back in

click create website. You should see a new XML document with the changes you have made to the Portal.

So now we have two files that will have to use after we import our data. One has all of our system customizations and one has all of our Customer Portal customizations.

backup current crm 4.0 database
copy the .bak file to new crm sql server

stop async process in services ( I always do this on the import)
restore database on new server over writing your current database for CRM 2011

Open Deployment manager
disable organization
delete organization
import organization and run through wizard
Make sure one of the users is mapped as the System Administrator

make sure all workflows have been reowned to the logged in user including templates

Now we start to import the customizations back in.  Because I imported my customer portal into my system and then exported the default solution I have to import my customer portal into my system before I import back in my default solution.  It will reference fields that are in my default solution.  the same goes for the connector(not everyone will have this).

import customer portal cab file
import ConnectorForMicrosoftDynamicsGP.zip
import default solution – customizations

To get the changes to the Customer portal I need to run copy website.  In this case my source will be XML file and I will go find the xml file I created at the beginning of this process.

That is it if you are just reimporting the CRM 4.0 into 2011.  Doesnt seem too bad until you do it 15 times…

Now if you are using the connector we continue on… in our case we work with GP as well.

initial sync – take another snapshot of the VM  (just in case)
make sure permissions are set correctly for the CRM Admin that will be used for the sync tool – system customizer and Dynamics Integration

make sure you can still connect to GP and CRM and run configuration tool again like it is the first time.

One of the things the configuration tool does is update all of the products to inactive and changes the name.  Which seems like overkill, but makes sence in the long run.  Well this does not seem to happen when I run it, so I run a sql statement to make that happen ( NOT SUPPORTED)

set Name = Name + ‘(CRM)’,
productnumber = productnumber + ‘(CRM)’,
StateCode = 1

run the initial pick list utility
customer to account
order
invoice
U of M
flat fee to product
kit to product
sales item to product
sales person to erp

I did notice that this seems to have been a once and done.  The first time I ran this during the testing phase, it brought over a ton of changes.  It appears that those changes are all stored in the default solution and only new ones have come over since.  Which is good that will save some time.

Next I stop the Connector for  Microsoft Dynamics Service in services.  I am going to need to change the dates on the connector like this is the first time running the tool.  I need to change the Last Run Time.  Then I run the maps.

1. Erp users: Sales Person to ERP user
You will have to map the users in CRM to the ERP user again
2. Map UofM schedules to unit groups.
3. Map pricing header information: Pricing Header to Pricing Header
4. Map product information. – No one says anything about order on this one, well it does matter.  If you use kits you should do service and sales items before kits… logically you will have those items in your kits.  In the documentation I think it has kits before sales items and that caused a ton on problem with the timing of items being in the system..

service to product
sales item to product
kit to product
miscellaneous charges to product
flat fee to product

5. Map pricing information: Price Level to Price List
6. Map customer accounts or contact information: Customer to Account
7. Map sales orders to order
8. Map sales invoices.

The event log will become your best friend for finding out what is going wrong.

Random errors you may come into

Current key (KeyType : CrmWRPCTokenKey) is expired.  This can indicate that a key is not being regenerated correctly.  Current Key : CrmKey(Id:599c310d-2980-e111-8175-000c29fb6cf7, ScaleGroupId:00000000-0000-0000-0000-000000000000, KeyType:CrmWRPCTokenKey, Expired:True, ValidOn:04/06/2012 20:42:41, ExpiresOn:05/09/2012 20:42:41, CreatedOn:04/06/2012 20:42:41, CreatedBy:CORP\CRMSVC.

When I searched for a cause/solution for this issues, I found this excellent post on Nishant Rana’s blog (http://nishantrana.wordpress.com/2008/06/11/invalid-action-error-microsoft-dynamics-crm-40/).

Start or Restarted Microsoft CRM Asynchronous Process Service and problem solved.  I had this turned off for the Re-import and had not turned it on before the weekend, came in on monday and was greeted with this error.  Apparently there is a process that updates this key and if the Asyn process is not running it can not be generated.

The Web Service plug-in failed in OrganizationId: 56f0ffa2-2c54-4ccf-a337-2c7d3f069337; SdkMessageProcessingStepId: 227a2681-06e5-43ad-855a-aca4ebd20049; EntityName: none; Stage: 30; MessageName: GetComponents; AssemblyName: Microsoft.Crm.Extensibility.InternalOperationPlugin, Microsoft.Crm.ObjectModel, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35; ClassName: Microsoft.Crm.Extensibility.InternalOperationPlugin; Exception: Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

Fix: restart IIS and recycle app pool seemed to fix the issue

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Generic SQL error.Detail:xmlns:i=”http://www.w3.org/2001/XMLSchema-instance&#8221; xmlns=”http://schemas.microsoft.com/xrm/2011/Contracts”&gt;  -2147204784  Generic SQL error.2012-03-13T20:25:47.6129599Z

This one took a while, turns out need to shrink the Database Transaction log.  It seems that  the import of the data will fill things up and then when I would try to publish the customizations after the import of my default solution it would stop with the error above.  This was one of those total wild goose chases because there was nothing wrong with contracts.. It just happened to be the place that it would stop processing…

Connector Errors and things that cause problems… the actual errors can be found in the Dynamics Web Service Exception console under Administrative tools.  In tree click System Exceptions and you will see a list of exceptions.  Double click on one of the exceptions.

yep that one is not very helpful.  But if you click on the View Exception Detail

Still not helpful… but if you click on Inner Exception Detail

Ok now it is helpful… Go fix error…

Valuation Method can NOT be “”
any sales items or discontinued items with a valuation method of 0.  this may seem weird, but we had a number of service items that we changed to discontinued with a script.  This is fairly common practice.  Well because they were service items they had a 0 valuation.  Now the system thinks they are sales items and they need a valuation method. This will cause this map to fail and the Pricing List to Price Level map to fail for the price list these items are included on.

Price Method can NOT be “”
still have not figured out how this happened on two items in our entire inventory but they can not be that way.   

Current Cost can not be less than 0
this is another one that I have yet to determine how has happened, but it can NOT be this way either.

Inner Exception: There was an error writing to the pipe: The pipe is being closed.

per http://support.microsoft.com/kb/2539263 you need to update the  receiveTimeout =”infinite” in the Microsoft.Dynamics.GP.eConnect.Service.exe.config

All shipment methods on Customer Cards have to bee in the SY03000 Master table

select distinct(SHIPMTHD)  from RM00102 where SHIPMTHD not in (select SHIPMTHD from SY03000 )

All Pricelist on Customer Cards have to be in the IV40800 Master table

select distinct(PRCLEVEL), CUSTNMBR from RM00101 where PRCLEVEL not in (select PRCLEVEL from IV40800) and PRCLEVEL <> ”

Posted in CRM, CRM 2011, Dynamics, Uncategorized | Leave a comment

Connector for Dynamics: Getting things synced up

Before I run the initial sync in the connector I am going to ensure that the data is mapping to place we want.  we are currently using Scribe.  I am going to compare the mapping for scribe to the mapping in the connector.

I am also going to verify that we are syncing the same entities.

Starting with Customer to Accounts:
to get a nice view of what was being mapped I used the export tab and copied the information into excel to compare it to what I have from scribe. Looks pretty good, but I did notice that according the maps the Address fields all said they were not mapped.  So as soon as I started to mess with mapping those I started to get validation errors.  I cancelled out the changes and came back in.  I took a look at the transformation and apparently they are mapped like the export tab had indicated, but because it is being done programmatically it is not showing as mapped on the mapping tab.  This is all fine, but it is something I think is important to pass along.

It appears to automatically list fields that are on the form.  I am not trying to populate fields not on the form.  If you were I imagine you would need to add them to the form or manually add them to the map.

the next obstacle…In the Invoices Map if you are capturing data in the User Defined Fields they are listed with the same name.  Orders had them listed with more manageable names.

Once I was confident in my maps I started by running the Picklist Synchronization utility which ran perfect.  No issues.  I did choose to run each item individually initially and then I run all of the product ones together and they ran one right after the other.

There were a lot of changes to the data.  I did not see an “export” of the messages of data that were being updated.  I simply copied and pasted into a document for further review.

Next I tried to run my first map.   I have only done Customer to Account.  Because I was most concerned that the customizations I already had in the system would make the integration fail.  I was incorrect.  The system was set up perfectly.

I had one authentication issue I had to over come.  It was really me not following the directions completely.  I had forgotten the final

11. Select the Role Assignments node.
12. In the Add Role Assignments window, select Microsoft Dynamics Integration – Integrated Company from the Role list.
13. Click Add Windows Users and add the GP Integration account that you created in step 1.
14. Select the Select Individual Companies option.
15. Select each company that you plan to integrate.

I also added the security role for System Customizer for my integration user within CRM 2011.

After I made these two changes this error :

[Customer to Account] has encountered an error. Processing will be aborted. Insufficient authorization to perform this action.

I was getting from the Connector for Microsoft Dynamics went away and all contact records were synced up.

At this point I am confident that I can let go of scribe and change our GP to CRM integration tool to the Connector for Dynamics.

Posted in Connector for Microsoft Dynamics, CRM, Dynamics, GP, Uncategorized | Leave a comment

Connector for Microsoft Dynamics: Error ‘crmform.all.dynamics_isreadyforintegration.DataValue’ is null or not an object

So thankfully I am still not in production with CRM and I suppose I should get a slap on the hand for not testing CRM a little more after I imported the ConnectorForMicrosoftDynamicsGP.zip solution. As soon as I opened the a new contact record form I was greeted with this little nasty…

Also I remembered as I imported the solution I was not given the choice on

Select a customization option: 

 Select Maintain customizations if you are installing Microsoft Dynamics CRM for the first time. 

 Select Overwrite customizations if you are upgrading an existing ERP solution, or if you are upgrading to Microsoft Dynamics CRM 2011. 

This is not a fresh install of CRM this is an upgrade from 4.0.  So I decided to import the solution again and it even said at the top that there was an update for the solution.  This time I was give the choice above.  Considering things were not working correctly I chose to Overwrite, which could have caused me a tremendous amount of work.

I go back to the form again, and still getting the error.  I do know that if a field is not on the page and it is getting called by JavaScript you will get that error.  So I open the customize form and found the field “Ready for Integration” in the list and sure enough it was not on the form.

At this point I just added the field.  Error went away.  I needed to do this on Both the account and contact form.  Maybe this will save someone else a little time if they come across this.

Also there was no need to import the solution again.  And I will also mention.  This did not remove any of my customizations to the form.  Everything stayed intact 😀

Still have not gotten to an actual integration yet…

 

Posted in Connector for Microsoft Dynamics, CRM, CRM 2011, Dynamics | Tagged | Leave a comment

Connector for Microsoft Dynamics: GP2010 to CRM 2011 just getting it set up

First off I needed to install the connector, but before I could begin I needed to install the Web Services for GP.  And the Web Services Runtime also had a list of requirements…

Make sure you use the correct Install guide.  I found the one on the MS website, which is named the same as the one in the install DVD for GP2010, is just a little different.  As I ran the through the install I did notice that what I was doing was a little different but I thought it was just missing information (we all know that never happens) but when I tried to test the web service url it was not correct.  The installation was pretty straight forward.  You need to make sure you have IIS set up, functional currency and the ISO currencies.  I installed this on the same server as my gp sql server so I could use the local account for the service account.  So running through the wizard worked fine and I really didn’t need the documentation until…Here is where my problem started… http://machine_name/DynamicsGPWebServices/DynamicsGPService.asmx  is not the correct url for GP2010 and you will not find a webservice there. So if you are getting a 404 it may simply be the url is incorrect.

I used the default settings for the install and this is the correct url for GP2010:

In documentation : http://machine_name:48620/Dynamics/GPService

this one also got me there:  http://machine_name:48620/DynamicsGPWebServices

From what I understand there is no actual site in IIS like there is for GP10 and going and looking in there you will not find anything.  To see if you have the WebService set up you want to look in Services for Microsoft Dynamics GP Service Host.  It that is there and running you should be good.

You will then  be directed to set up security.  This is a tool that you end up using for both the Web Service and Connector security.  It is under Administrative tools>Dynamics Security Console.  The instructions were pretty straight forward for this as well.

Now it  was time to install the connector. This went fine although I did need to install the .net 4.0 framework and that required a reboot of the server so this does need to be done after hours.  Good thing I chose a saturday.

The install was pretty straight forward from there.  You have some security that you will need to address, but the install guide had everything defined very well.

Then I get to the setting up of the adaptors.  It suggests the CRM adaptor first.  You have to import the solution listed and this will set up the security role.  You will need to have a user assigned to this role before you try to set up the adaptor.

So I added the credentials for the user I assign the security role to and add the Discover Service URL as listed in the documentation. Now I was getting a very strange error.

Test setting failed:
A connection to the Microsoft Dynamics CRM discovery service could not be validated using the “http://myserver/XRMSerivces/2011/Discover.svc&#8221; server and the port””.
The following exception occurred while attempting to retrieve all companies: The remote name could not be resolved: ‘http’

The instructions were very clear go to developer resources and grab the URL for Discover Service however it is only asking for “Discover Server” so I tried just the name of the server even though the documentation clearly says where to get the “url”.

Test settings failed:
The following exception occurred while attempting to retrieve the “CRM” configured company: exception while trying to create an instance of the Dynamics CRM web Service.

Now Of course I decided to click the link that said “Configure Microsoft Dynamics CRM”  It seemed reasonable, and I was able to connect to my server and pull in my organizations and I went through the little wizard.  Yeah.. DONT do that.  I have no idea if you have to and I am half tempted to revert my CRM VM back because the little utility updated a ton of permissions and I only selected the ones that were done by default. I watched as it told me what it was updating and it removed “create”, “delete” and probably “edit” permissions on any entity that was selected for all of my roles.  I am assuming that the utility assumes that you want the “system” to be the only one to make updates to those particular entities.  I will have to let you know later how that one works out.

I marked out that text and have an update…  You will have to use the Configure Microsoft Dynamics CRM untility.  And here is what gets changed… I found this in the documentation a little later on

Changes made by the Microsoft Dynamics CRM Configuration utility
If you run the Microsoft Dynamics CRM Configuration utility, the following changes are made to each Microsoft Dynamics CRM organization that you selected for configuration.
Note: Before the Configuration utility makes any changes to Microsoft Dynamics CRM, it saves your existing customizations to C:\ProgramData\Microsoft Dynamics\Microsoft Dynamics Adapter. You can choose to remove these customizations and revert to your previous customizations if you uninstall the product. If you choose to remove the customizations, any of the custom entities that contain data will not be removed.
 A Submit Order button is added to the Order form. This button appears only for users who are in roles that have the ISVExtenstions privilege enabled for the organization.
 All prices and price lists are set to read-only.
 The product catalog is set to read-only.
 All unit groups are set to read-only.
 Any existing products, discount types, and price levels in the product catalog are deactivated and renamed.
 The invoice functionality is limited to read-only within Microsoft Dynamics CRM.
 The default decimal precision is set to four decimal places. You can change this setting if you want your Microsoft Dynamics CRM pricing decimal precision to be less than four. The Microsoft Dynamics CRM pricing decimal precision should match your Microsoft Dynamics GP functional currency decimal precision to prevent rounding issues. Microsoft Dynamics GP functional currency decimal precision can be set up to five while Microsoft Dynamics CRM can be set up to four.
 Integration key attributes are added to the entities selected on the Select the entities to configure for integration window. The following entities are pre-selected by default:
o Account
o Contact
o Invoice
o Order
o Product
o ERP system user
 The following custom entities are added.
o ERP System User – For tracking salespersons in the ERP system
o *Account* – For tracking accounts that have been integrated and then deleted from Microsoft Dynamics CRM
o *Contact* – For tracking contacts that have been integrated and then deleted from Microsoft Dynamics CRM
 The isSOPIntegrated attribute is set to true for each organization to be integrated.
 A Ready for Integration check box is added to the Administration tab on the Account form.
 An Integration Key attribute is added to the Administration tab on the Account form.
 A Submit button is added to the Account form.
74
CONNECTOR FOR MICROSOFT DYNAMICS FOR USE WITH MICROSOFT DYNAMICS GP™
 A Ready for Integration check box is added to the Administration tab on the Contact form.
 A read-only Integration Key field is added to the Administration tab on the Contact form.
 A Submit button is added to the Contact form.
 A control is added to the User form that allows users to map an integrated ERP system user to an existing Microsoft Dynamics CRM user.
 The Order form is validated to ensure that a customer account is ready for integration or that the customer account is able to be integrated if it is not already integrated.
 A plug-in is registered in Microsoft Dynamics CRM.
 The Microsoft Dynamics Integration security role is created.
 The following privileges are removed from all security roles that they are associated to:
o AppendInvoice
o AssignInvoice
o CreateInvoice
o CreateProduct
o DeleteInvoice
o DeleteProduct
o OverridePriceEngineInvoice
o ShareInvoice
o WriteInvoice
o WriteProduct
 When using a Microsoft Dynamics CRM online deployment, the user specified as the CRM Integration account will be set to have an access mode of Non-interactive and will be flagged as an integration account.

The above information was pulled directly from the ConnectorForMicrosoftDynamicsGPFeaturePack6.pdf

The Adapter settings for GP went very smoothly.

Well at this point I thought I would try to do a new integration.  Well that was when I noticed that I do in fact need to get those setting to work.

After taking a look at the tips for CRM adaptors in the documentation I noticed it said

“Microsoft Dynamics CRM organizations have been properly configured, the message “Test settings succeeded with warnings” is displayed when you click Test Settings. This means that the Test Settings operation was successful in validating some of the Microsoft Dynamics CRM organizations but failed with others.” 

Ok that was not anywhere near what the error message said, but I did remember when I did my new install of CRM 2011 it automatically set up the “CRM” organization and then when I was importing my current company DB it said that I needed to create a new DB because CRM already existed.  (later I found out I could have disabled and deleted CRM and imported the old CRM db and created the Org on the fly) Anyway so I never really set up CRM organization and I did not import the solution into it.  After reading the little note in the doc I took a stab and disabled the CRM org.

So after I ran the utility and then found the tip and disabled the CRM organization I was not using.  My Discovery Server ended up just being the name of my server.  Not the entire url.

So now that I have the connector set up and talking to both GP and CRM it will be time to try an integration and that will be another post.

Posted in CRM, CRM 2011, Dynamics, GP, GP 2010 | Leave a comment