Knowledge found and lost while working with Microsoft Dynamics CRM
RSS icon Home icon
  • Dynamics CRM 3.0: Adding a user-friendly CRM URL

    Posted on July 16th, 2006 mitch Print Print 2 comments

    As you probably know by now, if you instructed the CRM installation application to create a new web site on which to host CRM, it will assign it the port 5555, which requires the users to type in a fairly complicated URL to access CRM: http://myserver:5555.

    This exercise will solve that problem by creating a standard URL called CRM.

    On the CRM Server, perform the following steps:

    1) Open Internet Information Services Manager.

    2) Double-click on the Web Server's name.

    3) Double-click on Web Sites.

    4) Right click on Microsoft CRM v3.0 ( which should be your CRM web site ).

    5) Select Properties to display the web site properties dialog:

    6) Click the Advanced button to display the Advanced Web Site Identification dialog:

    7) Click the Add button to display Add/Edit Web Site Identification dialog.

    8) In the TCP Port edit box, enter 80.

    9) In the Host Header value edit box, enter crm. The dialog should look like:

    10) Click OK, three times, then exit IIS Manager.

    11) Launch the DNS Management console.

    12) Double-click your main DNS server.

    13) Double-click Forward Lookup Zones

    14) Right-click your domain's internal address name.

    15) Select New Alias (CNAME).

    16) In the Alias name edit box, enter crm.

    17) In the Fully qualified domain name edit box, enter the full path to your CRM Server, like this:

    18) Click Ok.

    19) Right-click on your main DNS Server name.

    20) Select Clear Cache.

    21) Close the DNS Manager.

      

    That is pretty much it.

    Final Note: You need to add http://crm to the Local Intranet zone for all CRM workstations. This can be done manually, or though an Active Directory Group policy.

     

    Dynamics CRM, Installation
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    3,658 views
  • SQL Server 2000: Moving the default database directory

    Posted on July 16th, 2006 mitch Print Print No comments

    It came to my attention last week while planning a CRM SBE installation that we needed to place the CRM databases on a on the D: drive, instead of the current SQL configuration of C:.

    After a bit of Googling, I discovered this is actually fairly easy, using the following procedure:

    1) Start SQL Server Enterprise Manager.

    2) Right-click on the SQL Server name.

    3) Select Properties

    4) When the SQL Server properties dialog displays, click on the Database Settings tab, as shown below:

    5) Change the Default data directory and Default log directory to the new location on the new drive.

    6) Click ok.

    7) This information is stored in the Windows Registry and just to make sure that everything was set correctly, I stopped and restarted the SQL Server service.

    Development, Dynamics CRM
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    1,110 views
  • Dynamics CRM 3.0: Exchange Server Setup

    Posted on July 16th, 2006 mitch Print Print 1 comment

    The Microsoft Dynamics CRM team had a good article on the proper setup of Outgoing CRM email.

    One additional step that needs to be performed if your Exchange Server is not on the same physical computer as CRM is to instruct the Exchange SMTP service to allow the CRM server to Relay outbound email through it.

    Note: These steps mostly apply to CRM Professional installations where you are have decided to use a different server other than the CRM server to send outbound email.

    A CRM SBE will have everything on one server so for normal SBE installations, this will not be an issue.


    Background:

    As a security measure, Exchange 2003 does not allow other servers to relay SMTP email though its SMTP server unless specifically instructed to do so. This prevents unauthorized email traffic that can turn your Exchange server into a SPAM host.

    The Procedure: 

    From the Exchange Sever, start the Exchange System Manager application and follow these steps:

    1) Double-click on Servers
    2) Double-click on the Exchange Server
    3) Double-click Protocols
    4) Double-click SMTP
    5) Right-click on Default SMTP Virtual Server
    6) Select Properties
    7) Click the Access Tab
    8) Click the Relay button
    9) The Only the list below radio button should be checked, as shown below:

    10) Add your CRM server's TCP/IP address to the list of Computers that are Granted Access.
    11) Click OK.
    12) Test by sending an email from the CRM web client to one of your test contacts.

    If you don't follow this procedure, the Exchange Server will simply ignore any outbound SMTP email from the CRM Server and no one will be notified.

    Final Note:

    If email is still not flowing, make sure your Exchange Server ( the computer account, itself ) is part of the PrivUserGroup that CRM created within Active Directory.

     

    Dynamics CRM, Installation
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    6,122 views
  • But it's a dry heat

    Posted on July 12th, 2006 mitch Print Print No comments

    So I get in my truck to run an errand a bit ago and when I looked up at the built-in thermo-meter, it said 116 degrees.

    Wow!

    Knowing that it couldn't be that hot, I check weather.com when I got home and found that indeed, it was only 101 degrees.

    And, since there is only 24% humidity, we can classify that as a dry heat.

    Hot, but not like Africa-hot or anything.

     

    Meanderings
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    668 views
  • Using SQLDMO to Restore a Database to a New Database

    Posted on July 11th, 2006 mitch Print Print No comments

    My head hurts – mostly from banging it against the wall for the past three hours as I attempted to get SQLDMO to restore a full SQL backup to a completely new database.

    You wouldn't think it was that hard, but unfortunately, everything has to be high on the very correct side in order for the Restore function to work properly.

    Again, this is to restore to a new database, not the same one the backup came out of.  Anyway, here is the code:

     

    // Assumptions:
    // sWorkingDirectory = "c:\data"
    // fromdb = "MYORGANIZATION"
    // todb = "NEWORG"
    // sPrimaryDatabaseDirectory = "c:\sql\data\"
    //
    // create the full path of the physical location
    // of the database backup file.
    // sDatabaseFullpath = c:\data\MYORGANIZATION_MSCRM.bak
    //
    string sDatabaseFullpath =
    string.Format(@"{0}\{1}_MSCRM.bak", sWorkingDirectory, fromdb);
    // Create a SQLDMO SQL Server Object and connect
    // to the database using a Windows Trusted connection.
    SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
    srv.LoginSecure = true;
    srv.Connect(sDatabaseDataSource, null, null);
    // Create a SQL Server Restore Object
    // and instruct it to restore the Full database
    SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
    oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; 
    // Formulate our Old and New database names
    // sOldDatabaseName = MYORGANIZATION_MSCRM
    // sNewDatabaseName = NEWORG_MSCRM
    string sNewDatabaseName = string.Format(@"{0}_MSCRM", todb);
    string sOldDatabaseName = string.Format(@"{0}_MSCRM", fromdb); 
    oRestore.Database = sNewDatabaseName;
    oRestore.Files = sDatabaseFullpath;

    // This the important part, and what took me so long.
    // We want to instruct SQL Server to install our files
    // in a new location, not the default location from
    // whence they came. BUT, we MUST use the OLD logical
    // names or SQL Server will get really confused and
    // throw an error.
    //
    // RelocateFiles =
    // [MYORGANIZATION_MSCRM], [c:\sql\data\NEWORG_MSCRM.mdf]
    // [MYORGANIZATION_MSCRM], [c:\sql\data\NEWORG_MSCRM.ldf]
    //
    oRestore.RelocateFiles =
    string.Format(@"[{0}],[{1}{2}.mdf],[{0}_log],[{1}{2}.ldf]",
    sOldDatabaseName,
    sPrimaryDatabaseDirectory,
    oRestore.Database);
    oRestore.FileNumber = 1;
    oRestore.ReplaceDatabase = true;
    oRestore.SQLRestore(srv);

    Development
    1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 4.00 out of 5)
    Loading ... Loading ...
    1,226 views
  • Calf: 1, Mitch: 0

    Posted on July 9th, 2006 mitch Print Print No comments

    Some time last year I was out with my Dad trying to find a newborn calf so that we could verify its sex and put a tag in its ear for identification purposes.

    When a cow has a calf, they will hide it to keep predators from finding it. This sometimes makes it rather difficult to find the little critters.

    Normally, the Momma cow doesn't range too far from the little one so when we found her, we knew the calf would be fairly close. But we looked, and looked, and looked, and still no calf.

    It was about then that I was to test my theory that I'm smarter than a Momma cow.  I know, rather risky, but this was not a life or death matter, so I thought I'd just throw caution to the wind and go for it.

    Anyway, I told my Dad to get back into the truck and drive away while I walked into the nearby trees and hid.

    As expected ( me being smarter than the cow ), Momma walked over to the calf to check on him.  Did I mention he was lying in the middle of the pasture mostly in plain sight except for the slightly higher grass? No, I don't think I did.  Stupid humans.

    Anyway, once I spotted Momma with the calf, I ran over and grabbed "ahold" of it.

    Now if you've never been around cows, what you probably don't understand is there is a pretty good reason that the La Riata was invented. [ Uh, that's Lariat, or rope, for you American types. ]

    It's because when a calf gets to be about 4 or 5 days old, they can run like rabbits and you just can't catch them on foot. Which is what we have to do since my Dad doesn't have horses.

    Anyway, the calf was only a couple of days old, and since I had the act of surprise on my side, I was able to catch him before he took off.

    So I'm squatted down, holding onto the calf, trying to keep it calm, and waiting for my Dad to return so we can tag this feller ( it was a boy-cow ) and get on our way.

    The main thing you have to watch out for when you have ahold of a newborn calf is thier fear-reaction – which mainly involves pooping on you. And yes, I said poop.  It's yellow and is rather liquid and your Mom will probably make you take your clothes off on the car port before she'll allow you to walk into the house to take a shower. ( it's ok, even though the highway is 100 feet away, most people don't pay attention to half-nekked white boys on the car-port. )

    Besides being rather poopy, newborn calves are also very slick from the oils on their hair.  This makes them about as easy to hold onto as a greased watermellon.

    By the time my Dad made it back, me and the calf had both ended up lying on the ground in a wrasslin' match that was actually quite comical.  I was trying to hold onto the calf and not get pooped on, while my Dad was trying to find the ear-tagging device.

    After wollering around on the ground for what seemed like 10 minutes, a curious thing happened: Me and the calf ended up facing each other. No longer was I worried about the poopy factor, I was worried about getting kicked in some of the more delicate regions that are located on the forward-facing side of my body.  All the while trying to hold onto this damn calf.  And my Dad still couldn't find the damn tagger.

    It was about this time that the calf discovered that while the smelly-two-legs was smarter than his Mom, it was not smarter than him.

    And the little bastard raired back a front leg and stabbed me quite expertly in the middle of the chest with one of those rather sharp newly-manufactured front hooves.

    I thought I was going to die. It hurt like hell. So there I was, lying on the ground, ahold of the calf, trying not too get pooped on, trying not to get kicked in the family jewels and trying not to let go of the calf while at the same time trying to catch my breath and not have a heart attack.  ( did I mentioned I cried? didn't think so. )s

    All of those things combined were way more that I am qualified to handle at any one point in time.

    Luckily, my Dad called out to me that he couldn't find the tagger and to let the calf go.  I did.

    I stumbled back to the truck and the look on my face made my Dad ask what had happened.

    I pulled up my shirt, which had a mere muddy-spot on it, to reveal a quarter-inch deep bloody divot residing in the middle of my sternum.  It hurt like hell. Did I mention that already?

    And the thing that really pissed me off? The fact that I could have sworn I heard the calf-equivalent of laughter as he ran away with his Mother into the safety of the woods and away from the annoying two-legs.

    Calf: 1, Mitch: 0

    Two words calf-boy: ham-burger.

     

     

    Copyright (C) 2006 by Mitch Milam

    Tall Tales
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    1,532 views
  • The show must go on

    Posted on July 9th, 2006 mitch Print Print No comments

    Greetings Folks,

    I had what you might call a bit of a setback in both my personal and professional life a couple of weeks ago. My friend and business partner, Will Hadly, unexpectedly passed away on Father's Day from what the doctors called a heart "anomaly" ( which means they don't know what exactly happened ).

    It's taken me quite a while to make up my mind on whether or not I should even post such an announcement on my blog, but I finally reasoned that some of the people in the CRM and/or Small Business community that knew Will may not have heard of his passing. If you are one of those people and would like more information, please contact me off-line.

    Needless to say, this event was quite a shock to all of us who knew him and speaking for the majority of those folks, he will be sorely missed. Not a day goes by that I don't think of at least one thing that I need to tell him about some obscure factoid that I just ran across or get his opinion on some wild-ass idea that popped into my head.

    Will and I had a rather complicated business relationship. On one level, I was merely one of the consulting bodies he used to fulfill customer engagements. On a higher level, we were developing a combined practice to focus on Microsoft Dynamics CRM – and having a blast doing it. Great plans were in the works and we were making excellent headway into the local ( and even national market ) expounding on the benefits and features of CRM 3.0.

    Will had been nominated by our buddy Larry Lentz to become a CRM MVP and should he have hung around till July 1st, he would have been given the honor of accepting that assignment. To top even that event, we had been working, studying, and testing and as of the week of his death, had finally achieved Gold Partner status in the Microsoft Partner program.

    We pretty much had the world divided into equal parts of optimism and pessimism. Me being the optimist, he being the pessimist. [ this is the part of the program where my friends fall out of their chairs upon reading this - and wondering about my change of state. :) ] This allowed us to cover most bases associated with any problem we ran into and is what made us such a good team. That sounding board and reality check will be sorely missed.

    I was watching the Rock Honors on VH1 a couple of weeks ago and they had Paul Rodgers [from Bad Company] fronting Queen as they did a salute to Freddy Mercury with the song: The Show Must Go On. It was very cool and very moving – which is the reason for me selecting that phrase for the title of this entry.

    The show must go on. No matter how difficult, sad, disorienting, or painful it may be.

    As mentioned, Will and I had great plans and grand ideals about how to transform current and new customers with CRM 3.0 and I don't exactly intend to just throw that all away. Doing so would simply be a waste of time and energy and do no one, living or dead, any good. So, I will indeed endeavor to proceed down the provided path that we had both worked so hard to construct.

    Stay tuned as I finish up the pile of CRM-related articles I have on my list as well as some free and commercial CRM add-ons that will be released in the next few months.

    Thanks, Mitch

    Misc
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    801 views
  • Out of the mouths of babes

    Posted on July 9th, 2006 mitch Print Print No comments

    I went home to Arkansas 4th of July weekend to spend a little time with the folks.  My Dad, a retired farmer, still has a few cows to keep him entertained and occupied during the Winter months between quail hunting activities.

    My 5-year old nephew loves to go see the cows, though he is more than a little scared of them.  He also loves goats ( which some friends of my parents raise and show ). This means any time he comes to visit my parents, an expedition is formed to see the goats, goat man and goat woman ( the owners – names are too complicated for a 5 year old ), and last but not least, the cows.

    While visiting the goat man and goat woman, we picked up one of their guests ( 9-year old boy ) and took him with us to visit the cows.  He's from Mississippi and I don't think he spends that much time in the country.

    He noticed that there were "not many black roads [asphalt] around here," as we were bouncing down one of the trails in my Dad's pasture that was heavily rutted by my Dad driving through when it was muddy and the mud later hardening to make for a rather rough and bouncy ride.

    After making another comment about how rough the road was, my nephew made the following, rather astute observation in reply:

    "What do you expect boy? We're in a cow pasture!"

    And that just about says it all. :)

     

    Meanderings
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    789 views
  • Dynamics CRM 3.0: Error Accessing Reports

    Posted on July 6th, 2006 mitch Print Print 2 comments

    I ran into a very strange issue last week at one of our local customers.

    One of the users was receiving an error when she attempted to access the Workplace Reports group.

    It turns out, that for some unknown reason, she was not part of the Active Directory security group ReportingGroup, which is used by CRM to control access to the reporting server, etc.

    Adding her to this group corrected the issue.

    What I don't understand, is how this happened. This user was added to the system after the initial installation and Automatic Group Management was enabled so she should have been added to the ReportingGroup automatically.

    Anyway,if you ever run into Report access errors, check the user's membership into the ReportingGroup.

    Dynamics CRM, Reporting
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading ... Loading ...
    2,266 views