Duplicate Assigns On Create
Here is an interesting effect which I was solved recently, namely when an item in MSCRM was created the assign event (both callout and workflow) would fire twice. This was very odd and great lengths were taken to track it down, using the MSCRM trace tool, various tests etc… But since this was one instance of the problem which could not be replicated at other sites it was eventually shelved until more important issues were resolved.
This issue only occurred during creations from outside sources (namely my code) and didn't happen if you created the item in the MSCRM interface. But this was normal code where I created the item, set the properties and passed it to the Create method. Nothing fancy here. The issue was that I couldn't see the trees because of the forest, namely I was setting the ownerid parameter as one of the parameters.
What this was doing internally was causing the assign to fire when the item was created and then to cause a second assign to fire to handle the ownerid. Removing that one line of code fixed the issue up immediately.
IW is dead, long live IW
It does mean that my old content is gone, but do not fear I am making plans to get it back (either a backup or the WayBackMachine), so there will be some reposting on this site for the next little bit.
The text entered exceeds the maximum length
The text entered exceeds the maximum lengthThis is caused because the message ID is too long for the field, has nothing to do with the email itself (message is confusing cause it says text entered, but you not actually entering it). To solve it do the following:
-
Open the IE CRM Client.
-
Open Settings
-
Select Customisation from the left menu and open the E-Mail entity.
-
Open Attributes and Open the messageid attribute
-
You should see a text box named Maximum Length with the value 100 in it. Increase this value to 200.
-
Click Save and Close
-
Click Save and Close
-
Click More Actions à Publish All Customisations
-
Click Start Menu à Run and type iisreset click Run
Almost Famous pt 2
Almost Famous
South African ID Number Checker
Update 26 August 2010: A new and better version of this Excel file has been made available. Please go to South African ID Number Checker in Excel version 2 to get it.
Update 11 August 2011: Want this as an app for your smartphone? Click hereA few days back I wanted to validate a list of ID numbers, and previously I have done the basics (length, date etc...) but I decided to do the full thing this time. So I search for the rules and found this post, which explains it nicely and contains some C# code. However for me C# didn't cut it as I wanted to process an Excel spreadsheet. So I whipped together a nice one which does the following checks:
- Length
- Valid Date
- Date is in the past
- Gender Flag
- Nationality Flag
- Check Bit
24 Jan 2010: I have disabled comments on this post as I am getting a lot of people asking me about who ID numbers belong to, how to track people based on ID's or what someones ID is. None of those I can answer as I do not work for the govt, police etc... If you have questions on the technical aspects of ID numbers please contact me using the contact form option.
Internet Facing Deployment Tool
UPDATE 11 Feb 2008: The offical tool is now out. See http://www.sadev.co.za/node/167. The download for the beta one has been removed.
If you go through the documentation for MSCRM 4.0 there is a tool which can do the configuration of for you. However this tool does not exist yet and to get it you need to speak to Microsoft Product Support Services as it is still beta. However from looking at the news groups it seems thats hit and miss (guessing that some of the support guys know about it and some don't as it is beta). So until it is available I am putting it up here.
NOTE: This is a BETA tool and neither Microsoft nor myself will give you any help on this. This tool could completely damage your system so if you don't trust it, then do the steps described in the documentation.
Workflow doesn't work, Imports never happen, emails don't flow and Outlook clients cannot connect
- An easier way exists to do this now. See Workflow doesn't work, Imports never happen, emails don't flow and Outlook clients cannot connect - Reloaded
- Another issue causing the same problems has been found and solved. See: Request IP Address has different address family from network address.
The discovery service is a web service which gives back the real URL to the web services in MSCRM, so if you changed IIS it still gives back the old ones. There is also a bug in the RTM of MSCRM 4.0 which causes it to use the machine name instead of the host header after upgrades. So you go to http://<nice name> and the discovery service gives back to http://<machine name>/mscrmservices/2007/crmservice.asmx which doesn't exist since yourhost headers should have it as http://<nice name>/mscrmservices/2007/crmservice.asmx
You can pick this up using fiddler on the email server or desktop machine when trying to configure the email router or outlook client respectively. So I went though this with Microsoft PSS and they came back with a SQL command you can run to fix this.
NOTE: As this is a DB change it is unsupported. If you are a little worried about the impact do backups then try it. If you are very worried contact PSS directly for help.
USE MSCRM_CONFIG Update DeploymentProperties SET NVarCharColumn = '<server>:<port>' WHERE ColumnName= 'AsyncSdkRootDomain' Update DeploymentProperties SET NvarCharColumn = '<server>:<port>' WHERE ColumnName = 'ADSdkRootDomain' Update DeploymentProperties SET NvarCharColumn = '<server>:<port>' WHERE ColumnName = 'ADWebApplicationRootDomain'
Example, if your server is called: myserver and runs on port 50000
USE MSCRM_CONFIG Update DeploymentProperties SET NVarCharColumn = 'myserver:50000' WHERE ColumnName= 'AsyncSdkRootDomain' Update DeploymentProperties SET NvarCharColumn = 'myserver:50000' WHERE ColumnName = 'ADSdkRootDomain' Update DeploymentProperties SET NvarCharColumn = 'myserver:50000' WHERE ColumnName = 'ADWebApplicationRootDomain'
Once done do an IISReset and restart the Async service and everything should start to work fine! As I said before this came from PSS (in particular Justin Thorp)and I would really like to thank him for the hard workand great responses I got on it.
Not have enough privilege to complete Create operation for an Sdk entity.
0x80040256
Not have enough privilege to complete Create operation for an Sdk entity.
Platform
You get this error during an attempt to register a workflow activity or plug-in into MSCRM 4.0, and you may think that to do this customisation you need atleast the System Customizer role. Well you are wrong, you need higher than that. In fact the highest role for an organisation (System Administrator) isn't even enough. You need to be Deployment Administrator. This role is assigned on a server level, in the Deployment Manager tool and gives that user full powers on all organisations!
The reason I think this is badly thought out, is three fold. Firstly, I do not want to enable developers to see certain things in MSCRM in live enviroments (thus the great System Customizer role) but I want them to do the customisations. The second is if I have a developer working in a certain division or group company with it's own MSCRM organisation, I really don't want to let that developer loose on other organisations on the server (security and stability reasons). Lastly I don't want to have to give access to the server to more people than absolutely needed, and as I now need to be able to set people up to be Deployment Administrators from time to time it means extending that group of people. Anyway heres hoping MSCRM 5.0 will fix it ;)
How to debug workflow assemblies and plug-ins in MSCRM 4.0
Remote debugging sounds like the title to a book but it isn't - in truth, I have never used remote debugging because haven't needed to. In MSCRM 3.0 the exceptions bubbled up nicely in workflow and I could do a lot on my own machine. However in MSCRM 4.0, those exceptions don't bubble up nicely :( All you get is something like this:
Beside's adding logging to your assembly (which you should do anyway), what's a dev to do now? You can now debug your plug-in's and custom workflow activities using the remote debugging facility in Visual Studio and that's what I hope to show in the next 9 easy steps!
- On your machine you'll find a folder <system drive>\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger (assuming you installed Visual Studio 2008 to the default location) which contains an x86 folder. Copy that to the MSCRM server and run the msvsmon.exe file.
- Now click Tools -> Permissions and give yourself access to it.
- Now load you plug-in or custom workflow activity (when I refer to plug-in for the rest of the document it means both, unless otherwise stated) using the *cough*annoying*cough* plug-in registration/developer tool.
- Next copy the PDB file for your assembly to the <system drive>\Program Files\Microsoft Dynamics CRM\Server\bin\assembly (assuming you installed MSCRM 4.0 to the default location).
- Now to finish up the MSCRM server side do an IISReset and restart the Async Windows Service.
- Back on your machine now in Visual Studio, set a break point in your code.
- Next click Debug -> Attach to Process. The transport should be Default and the Qualifier should be <domain>\<username running msvsmon.exe on the server>@<Server name>. Note: You can get this from the Tools -> Options in msvsmon.exe. You may need to do some firewall configuration but it should be automated.
- Next select the process to attach to, for an online plug-in, attach the debugger to the w3wp.exe process on the Microsoft Dynamics CRM server. For an offline plug-in, attach the debugger to the Microsoft.Crm.Application.Hoster.exe process. For asynchronous registered plug-ins or custom workflow activity attach to the CrmAsyncService.exe process.
- Now do whatever is needed to trigger your event and watch Visual Studio on your machine do it's magic!