Showing posts with label virtualpc. Show all posts
Showing posts with label virtualpc. Show all posts


VPC CRM 4.0

Just like Microsoft has developed a VPC for CRM 3.0, they have created one for CRM 4.0 as well. Here's the link to the VPC: http://www.microsoft.com/downloads/details.aspx?FamilyID=dd939ed9-87a5-4c13-b212-a922cc02b469&DisplayLang=en



Clone a record

There are some interesting things in the May 2006 Demo VPC that you might not have seen before. One of them is cloning a record. There's an addon written and supplied with the VPC that does take of cloning a contact. I've used it in some other projects and will be using it in my current project again. Ofcourse you can modify the code to match any entity.

I'll add the code here so that you dont have to download the complete VPC. There will be added a piece of code to the isv.config file and an additional file will need to be placed on the server.

Here is the piece that needs to be added in to the isv.config file:


<configuration version="3.0.0000.0">
<Root />
<Entities>
<Entity name="contact">
<ToolBar ValidForCreate="0" ValidForUpdate="1">
<Button Title="Clone Contact" ToolTip="Create a Copy of This Contact" Icon="/CloneContact/contactclone.gif" Url="/CloneContact/CloneContact.htm" WinMode="1" WinParams="dialogHeight:100px;dialogWidth:300px;"/>
</ToolBar>
</Entity>
</Entities>
</configuration>


This is the code that needs to be stored in the file as indicated in the isv.config file:

<html>
<title>Clone Contact</title>

<style>

BODY, TD
{
font-family: arial;
font-size: 12px;
}

TD.body
{
border-bottom: solid 1px #cccccc;
text-align: center;
}

</style>

<script language="javascript">

// Set global variable for the cloned contact window
var oClonedContact;

function window.onload()
{
// Open a new contact form
oClonedContact = window.open('/sfa/conts/edit.aspx','','menubar=0, status=1, width=1000, height=600');

// Set a timeout to wait for the new contact form to load
setTimeout('checkPageState()',100);
}

// Checks if the new contact form has completed loading
// When it completes, CloneContact will be called
// If it's not loaded, it will set a timeout and check again.
function checkPageState()
{
if (oClonedContact.document.readyState == 'complete')
{
CloneContact();
return;
}

setTimeout('checkPageState()',100);
}

function CloneContact()
{
// Get a pointer to the parent window
var oParent = window.dialogArguments;
var oSource = oParent.document.crmForm;

// With the target crmForm
with(oClonedContact.document.crmForm)
{
// Name fields
salutation.DataValue = oSource.salutation.DataValue;
firstname.DataValue = oSource.firstname.DataValue;
nickname.DataValue = oSource.nickname.DataValue;
lastname.DataValue = oSource.lastname.DataValue;
jobtitle.DataValue = oSource.jobtitle.DataValue;
parentcustomerid.DataValue = oSource.parentcustomerid.DataValue;

telephone1.DataValue = oSource.telephone1.DataValue;
telephone2.DataValue = oSource.telephone2.DataValue;
mobilephone.DataValue = oSource.mobilephone.DataValue;
fax.DataValue = oSource.fax.DataValue;
pager.DataValue = oSource.pager.DataValue;
emailaddress1.DataValue = oSource.emailaddress1.DataValue;

// Address fields
//address1_name.DataValue = oSource.address1_name.DataValue;
address1_line1.DataValue = oSource.address1_line1.DataValue;
address1_line2.DataValue = oSource.address1_line2.DataValue;
address1_line3.DataValue = oSource.address1_line3.DataValue;
address1_city.DataValue = oSource.address1_city.DataValue;
address1_stateorprovince.DataValue = oSource.address1_stateorprovince.DataValue;

address1_postalcode.DataValue = oSource.address1_postalcode.DataValue;
address1_country.DataValue = oSource.address1_country.DataValue;
//address1_telephone1.DataValue = oSource.address1_telephone1.DataValue;
//address1_addresstypecode.DataValue = oSource.address1_addresstypecode.DataValue;
//address1_shippingmethodcode.DataValue = oSource.address1_shippingmethodcode.DataValue;
//address1_freighttermscode.DataValue = oSource.address1_freighttermscode.DataValue;

// Professional Information fields
//department.DataValue = oSource.department.DataValue;
accountrolecode.DataValue = oSource.accountrolecode.DataValue;
managername.DataValue = oSource.managername.DataValue;
managerphone.DataValue = oSource.managerphone.DataValue;

assistantname.DataValue = oSource.assistantname.DataValue;
assistantphone.DataValue = oSource.assistantphone.DataValue;

// Personal Information fields
gendercode.DataValue = oSource.gendercode.DataValue;
familystatuscode.DataValue = oSource.familystatuscode.DataValue;
spousesname.DataValue = oSource.spousesname.DataValue;

all.birthdate.DataValue = oSource.all.birthdate.DataValue;
all.anniversary.DataValue = oSource.all.anniversary.DataValue;

// Description
//description.DataValue = oSource.description.DataValue;

// Internal Information fields
ownerid.DataValue = oSource.ownerid.DataValue;
originatingleadid.DataValue = oSource.originatingleadid.DataValue;

// Billing Information fields
//creditlimit.DataValue = oSource.creditlimit.DataValue;
//all.creditonhold.DataValue = oSource.all.creditonhold.DataValue;
//paymenttermscode.DataValue = oSource.paymenttermscode.DataValue;
//defaultpricelevelid.DataValue = oSource.defaultpricelevelid.DataValue;

// Contact Methods fields
preferredcontactmethodcode.DataValue = oSource.preferredcontactmethodcode.DataValue;
all.donotemail.DataValue = oSource.all.donotemail.DataValue;
all.donotbulkemail.DataValue = oSource.all.donotbulkemail.DataValue;
all.donotphone.DataValue = oSource.all.donotphone.DataValue;
all.donotfax.DataValue = oSource.all.donotfax.DataValue;
all.donotpostalmail.DataValue = oSource.all.donotpostalmail.DataValue;

// Marketing Information fields
all.donotsendmm.DataValue = oSource.all.donotsendmm.DataValue;
all.lastusedincampaign.DataValue = oSource.all.lastusedincampaign.DataValue;

// Service Preferences fields
preferredappointmenttimecode.DataValue = oSource.preferredappointmenttimecode.DataValue;
preferredappointmentdaycode.DataValue = oSource.preferredappointmentdaycode.DataValue;
preferredserviceid.DataValue = oSource.preferredserviceid.DataValue;
preferredequipmentid.DataValue = oSource.preferredequipmentid.DataValue;
preferredsystemuserid.DataValue = oSource.preferredsystemuserid.DataValue;
}

// Finally, close the dialog
window.close();
}

</script>

<body>

<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" align>
<tr valign="middle">
<td class="body" align="center">
<div style="font-size= 10pt; font-family= Tahoma;">Cloning Contact...</div>
</td>
</tr>
</table>

</body>

</html>


It's just a free addon from Microsoft, so use it if you can :)



Virtual PC 2007 Beta: Keyboard Problems (repeating keys)

About everybody who's using the beta of VPC 2007 is facing the same problem: Keys are being repeated again and again. When searching around on the internet, I found that this bug has been submitted and will be fixed in the RTM. Furthermore I found that there is a temporary solution. The workaround is to use the idle_thread. Now how do you set this setting?

- Use Explorer and go to the %root%\Documents and Settings\%username%\Application Data\Microsoft\Virtual PC folder.
- Right-click the Options.xml file, and then click Edit.
- Add the following code to the file.


<virtual_machines>
<enable_idle_thread type="boolean">true</enable_idle_thread>
</virtual_machines>

Note: The <virtual_machines> tags should be at the same level in the code as the <virtual_network> and <virtual_gateway> tags.

The CPU for the host system will indicate 100% usage. Another option is to use RightMark RMClock and activate the "Run HLT commands when OS is idle" option. See Jan Tielen's blog for more info regarding that.



Developing on multiple VPC's

Hi guys,

I'm wondering what technologies you're using for developing CRM projects. Especially when you have multiple clients..

Personally I use virtual machines via Virtual PC. Each PC is about 10 gb huge though. So I was looking around on the internet and I found a good solution to that. Now this is what I do:

- Create one VPC which has Windows Server 2003, MSSQL, CRM, Sharepoint, Office, Visual Studio etc
- Shutdown that VPC and mark the harddisk file as read only
- Create a new VPC based on that harddisk with a check set at 'Enable undo disk' (and RAM adjusted to something like 1400 mb)
- Modify CRM to meet the customer needs
- Shutdown the VPC by using 'Save State and Save Changes'
- Make sure that 'Commit changes to the virtual harddisk' is UNCHECKED
- Select 'OK'

By doing so, you would only need 1 huge VPC and the rest are small files of about 500 mb till 2 gb. That saves me sooo much space and time! If somebody asks me a question and I dont have crm at hand, then just create a new vpc, start it (that takes a while though), run the test and remove the undo disk. Done!

You can use the Public demo VPC by Microsoft, but keep in mind that there are modifications made to that VPC which you should undo first.

Hope this helps you as well!

Ronald



Clone your production system: VMware Converter 3.0

Imagine you have a problem on your production server. You try to reproduce the error on your dev, test and acceptance servers and they all work fine... Now what? How do you solve this? I really don't like to debug errors on the production machine..

VMware has the solution! They have created a free Physical to Virtual Convertion tool which does not require your server to go offline! They're currently in beta test, but will release within approximately 6 months with the final version.

What Is VMware Converter?
VMware Converter is a highly robust and scalable enterprise-class migration tool that reduces the time that IT managers spend converting physical machines to VMware virtual machines. Using a snapshot based cloning mechanism that is extremely fast and reliable, VMware Converter enables remote conversions without disrupting the source server during the conversion process.

For more information:
http://www.vmware.com/products/beta/converter/

If you can't wait until this product has been released, then you can work with VSMT, but you do need deep knowledge of AD, DNS etc.

The tool VSMT is developed by Microsoft and it works with Virtual Server and ADS. See this url for more information:
http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsmt.mspx



You definately need this for a demo!

Hi all,

Last weeks I've been giving some demo's. When a prospect would like to see a demo, then ofcouse I create a demo (in a virtual machine) in which they can recognize themselves. Every client has their own requirements and therefore require an own VPC. I used to use a simple VPC which has Windows 2003, SQL server 2000 and CRM 3.0 and extend this default image for every demo.

But now I have another default image :o) It's an image which contains Windows 2003, SQL Server 2005, Visual Studio 2005, Sharepoint Portal Server 2003 and more.

Best of this demo vpc, is that it is available for free! You can download this from Microsoft's website:
http://www.microsoft.com/downloads/details.aspx?familyid=A8EDFC7B-01D8-4500-845B-01370D4EED21&displaylang=en.

Be sure to have enough diskspace though, unpacked this VPC is about 11 gigs huge!