First off, before I say anything, I would like to thank Jason Lattimer for all of the hard work he did helping develop this application. I would not have reached my goal of having it out this year without him.
If you haven't been following, this new tool is designed to take existing applications and speed up the process of moving them into Microsoft Dynamics CRM as XRM applications.
Check it out and Download it here: http://xrmspeedy.codeplex.com/
What It Currently Does:
- Creates custom entities from SQL Server database tables
- Creates attributes from fields from database table fields
- Puts CRM 2011 fields on
Next Steps:
- Add other datasources (MySQL, Oracle, Etc...)
- Make it create relationships between created entities based on relationships that exist on database tables
We are always open to hearing about new feature requests.
-
Wednesday, December 26, 2012
XRM Speed Builder for Microsoft Dynamics CRM is Here!!
Tuesday, December 18, 2012
Oh Yeah, Evidently I Am Recognized as a Microsoft Community Contributer
So I was on the forums the other day and I noticed on my profile that my profile shows that I am a Partner, MVP, and Microsoft Community Contributor. I emailed the MCC program and they said that they could only email my award info the info they had on file which was for some reason some email address that hasn't been active for over 2 years. So as of yet I haven't received any details from Microsoft, besides that at some point during the last year I evidently won this award.
Cheers!
Cheers!
Labels:
Community,
CRM,
CRM 2011,
Microsoft Dynamics CRM
Ramping Up!! Something is coming
I got a fun announcement in the next few days. Can anyone guess in the comments what it is?!?!
Stay Tuned!!!!!!
Stay Tuned!!!!!!
Wednesday, December 5, 2012
Dynamics CRM Org Merge Part 2: The Sandbox
So, if you haven't been following, I am working on a project where they have both a CRM 4.0 organization and also a CRM 2011 Organization and they need me to merge them into a single organization. This is a bit of a different scenario than the norm in the Dynamics world but I am hoping to gain some economies of scale by utilizing the upgrade features of CRM 2011 even though we are not doing an upgrade.
Basically here is what it looks like:
Here are the steps:
- We will create a new organization in the CRM 4.0 environment.
- We will move the customizations to the new org but not data.
- We will attach the database to the CRM 5.0 environment and thus upgrade it.
This will do a few things for us:
- Will give us a clean environment to test upgraded customizations in before moving them to the real development environment to see what worksand what needs to be remediated.
- Can easily move things like jscript, web resources, plugins, workflows and entities that don't already exist in the current 2011 system as it makes sense as solutions. Some things like workflows would otherwise need to be re-built entirely based on our scenario if we didn't have this upgraded space.
Thoughts?
-
Basically here is what it looks like:
- We will create a new organization in the CRM 4.0 environment.
- We will move the customizations to the new org but not data.
- We will attach the database to the CRM 5.0 environment and thus upgrade it.
This will do a few things for us:
- Will give us a clean environment to test upgraded customizations in before moving them to the real development environment to see what worksand what needs to be remediated.
- Can easily move things like jscript, web resources, plugins, workflows and entities that don't already exist in the current 2011 system as it makes sense as solutions. Some things like workflows would otherwise need to be re-built entirely based on our scenario if we didn't have this upgraded space.
Thoughts?
-
Labels:
CRM,
CRM 2011,
CRM 4.0,
Microsoft Dynamics CRM,
Upgrade
Thursday, November 29, 2012
Org Upgrade/Merge Scenario Part 1
I am doing something a little different from previous CRM upgrade projects I have been a part of. The client has a CRM 4.0 organization and a CRM 2011 organization and they are used by two different sets of users. Now they want to upgrade the org to 2011, but they don't just want it upgraded, they want the 4.0 organization merged into the 2011 organization.
This is an interesting scenario and I think I will cover how it goes and the steps required to get there.
Hopefully the story over the next couple months will help someone.
Tuesday, November 13, 2012
Overriding the CreatedOn Attribute On Entities in Microsoft Dynamics CRM 2011
I wanted to write a quick blogpost because I think there are a lot of people out there that have never used the overriddencreatedon field that is on all CRM 2011 entities. If you have ever tried to manipulate the createdon field manually using the CRM sdk you will find that it is basically read-only.
There is a workaround for this though.
If you populate the overriddencreatedon field when you insert your entities you can specify your own datetime for the createdon field. Now when the field is saved the overriddencreatedon field datetime is put in the createdon field of the entity and the REAL createdon field is still saved in the overriddencreatedon field.
So all you have to do is populate the overriddencreatedon field and it will in turn populate the createdon field and the real date will then be saved in the overriddencreatedon field.
There is a limitation to this.
You cannot insert a datetime in the future. This will throw an error. If you are using an application on another server and using datetime.now you might want to also use .addminutes(-5) or something to that effect because if the server times are out of sync by even a little bit and the application server tries to insert a time that is in the future for the CRM server, it will fail.
-Happy Tuesday
There is a workaround for this though.
If you populate the overriddencreatedon field when you insert your entities you can specify your own datetime for the createdon field. Now when the field is saved the overriddencreatedon field datetime is put in the createdon field of the entity and the REAL createdon field is still saved in the overriddencreatedon field.
So all you have to do is populate the overriddencreatedon field and it will in turn populate the createdon field and the real date will then be saved in the overriddencreatedon field.
There is a limitation to this.
You cannot insert a datetime in the future. This will throw an error. If you are using an application on another server and using datetime.now you might want to also use .addminutes(-5) or something to that effect because if the server times are out of sync by even a little bit and the application server tries to insert a time that is in the future for the CRM server, it will fail.
-Happy Tuesday
Labels:
CRM,
CRM 2011,
Microsoft CRM,
Microsoft Dynamics CRM,
SDK
Tuesday, October 30, 2012
Sync Your Organizations With Microsoft CRM 2011 Instance Adapter
Microsoft has released a great new tool that will allow you to easily synchronize data between multiple Microsoft Dynamics CRM 2011 organizations. The tool is called the Microsoft Dynamics CRM 2011 Instance Adapter. It works for IFD, Online, AD, any CRM 2011 environment and should be a great tool for refreshing data from prod to dev, or any other synchronization scenario.
Since it's free, this can save you a lot of time and money and can be a real life saver if you don't have budget for a beefier tool like Scribe.
Get it here:
http://www.microsoft.com/en-us/download/details.aspx?id=35385
-
Since it's free, this can save you a lot of time and money and can be a real life saver if you don't have budget for a beefier tool like Scribe.
Get it here:
http://www.microsoft.com/en-us/download/details.aspx?id=35385
-
Thursday, October 25, 2012
New Logo for Microsoft Dynamics CRM 2011!
Microsoft Dynamics CRM 2011 has got a new logo, or at least new coloring. I was wondering what the rest of the community thought. Maybe it will grow on me but, as for right now, I think I liked the old one better.
I am interested in hearing your thoughts!
I am interested in hearing your thoughts!
-Happy Monday!
Tuesday, October 16, 2012
Demo Builder For Microsoft Dynamics CRM 2011 Adding New Verticals
If you haven't worked with the new re-released demo-builder that makes use of Office 365 with CRM Online, I highly recommend it. They have it working and fully functional now. They also have started releasing verticals for it.
The demo-builder creates a trial lab, fully configured, with working Dynamcis CRM 2011 Online, Sharepoint Online integrated, Customer Portal already set up and integrated, and a lot of other goodies. It does A LOT of ground-work for you
The first two are:
The demo-builder creates a trial lab, fully configured, with working Dynamcis CRM 2011 Online, Sharepoint Online integrated, Customer Portal already set up and integrated, and a lot of other goodies. It does A LOT of ground-work for you
The first two are:
- Citizen Service (311) Accellerator for CRM 2011
- Retail Banking for CRM 2011
Check it out HERE: http://demobuilder.cloudapp.net/unauthenticated-home/
Tuesday, October 9, 2012
Useful and Funny! Top 5 and Bottom 5 Blogposts of the Last 2 Years
In honor of reaching 400,000 blog hits today I figured I would share which five blog-posts in the last two years have been the most popular.
It should be said that by far, the top page (other than the homepage) was my CRM 2011 SDK Example Index , But that doesn't really count since it's just a listing of MANY of my other blogposts. It has probably been one of my biggest achievements within the community and I know it has helped a lot of people.
Ok, on with the countdown!
First the TOP 5
5. Instantiating a Service Object Within a Plug-in in Microsoft Dynamics CRM 2011
Ok, This one probably only got so many hits because it was linked on so many of my other posts in the last two years. It is a simple example of the correct way to instantiate a service object in a plugin.
4. How to: Retrieve the Metadata for an Entity Using Jscript or .NET Using the Microsoft Dynamics CRM 2011 SDK
This illustration shows you how to retrieve metadata for an entity using SOAP (JScript) or C# (.NET) with the RetrieveEntity message against the CRM 2011 organization service.
3. CRM 2011 Jscript Soap Request Formatter RELEASED!!
This is my tool I created that allows you to take soap envelopes captured from .NET calls (using the SDK SoapLogger for C# or my derivative work for VB.NET) and instantly convert those to JSCRIPT!
2. How to: Get and Set a Lookup Value in Jscript in Microsoft Dynamics CRM 2011
This is one of those posts that came from the fact that there are a lot of questions in the forums that relate to this topic and there are a lot of good posts that demonstrate either how to set a lookup value or get a lookup value, but there aren't many that show both. So that is what we I did.
1. RetrieveMultiple Calls in Jscript in Microsoft Dynamics CRM 2011
RetrieveMultiple is probably the most common call you will have to format up in your Microsoft CRM career, It has been for me anyways. I wanted to give you a couple examples of how to do this in Jscript. The first one is taken partially derived from the SDK that contains a linkentity (join) and the second is a simpler call that is a basic call that has criteria (where clause) but no links (joins).
Notable Bottom 5
5. Deprecated SDK Messages in Microsoft Dynamics CRM 2011
In this post I called out every message included in the CRM 2011 SDK that are currently considered deprecated by Microsoft. The only comment I got about it was that it would be better if I suggested alternatives to them all.
4. I will be Speaking at Twin Cities Code Camp Tomorrow if anyone wants to come out. It's FREE!!
My last ditch effort to get people out to see my presentation on CRM development at Code Camp last year. Luckily more people showed to the presentation than viewed this blog-post.
3. My Twin Cities Code Camp Presentation
After my presentation last year I posted my slide deck. According to Google Analytics it was on people's screens for a total of 4 Minutes and 29 Seconds.
2. Delete an Entity in Microsoft Dynamics CRM 2011 Using Jscript or .NET With DeleteEntityRequest
Evidently no one really cares about how to delete an entity (not a record in the system, AN ENTIRE ENTITY) in .NET or Jscript. It got very little activity in the last year or so after it was written.
1. Too Much Technology, Not Enough Life!!
Evidently my daughter sitting next to a toilet and a fun spider picture taken at 936mm (one of my best I might add) wasn't much of a draw. It got mention on Ben Hoskings blog, but beyond that that I don't think anyone else looked at it.
-Happy Tuesday!
It should be said that by far, the top page (other than the homepage) was my CRM 2011 SDK Example Index , But that doesn't really count since it's just a listing of MANY of my other blogposts. It has probably been one of my biggest achievements within the community and I know it has helped a lot of people.
Ok, on with the countdown!
First the TOP 5
5. Instantiating a Service Object Within a Plug-in in Microsoft Dynamics CRM 2011
Ok, This one probably only got so many hits because it was linked on so many of my other posts in the last two years. It is a simple example of the correct way to instantiate a service object in a plugin.
4. How to: Retrieve the Metadata for an Entity Using Jscript or .NET Using the Microsoft Dynamics CRM 2011 SDK
This illustration shows you how to retrieve metadata for an entity using SOAP (JScript) or C# (.NET) with the RetrieveEntity message against the CRM 2011 organization service.
3. CRM 2011 Jscript Soap Request Formatter RELEASED!!
This is my tool I created that allows you to take soap envelopes captured from .NET calls (using the SDK SoapLogger for C# or my derivative work for VB.NET) and instantly convert those to JSCRIPT!
2. How to: Get and Set a Lookup Value in Jscript in Microsoft Dynamics CRM 2011
This is one of those posts that came from the fact that there are a lot of questions in the forums that relate to this topic and there are a lot of good posts that demonstrate either how to set a lookup value or get a lookup value, but there aren't many that show both. So that is what we I did.
1. RetrieveMultiple Calls in Jscript in Microsoft Dynamics CRM 2011
RetrieveMultiple is probably the most common call you will have to format up in your Microsoft CRM career, It has been for me anyways. I wanted to give you a couple examples of how to do this in Jscript. The first one is taken partially derived from the SDK that contains a linkentity (join) and the second is a simpler call that is a basic call that has criteria (where clause) but no links (joins).
Notable Bottom 5
5. Deprecated SDK Messages in Microsoft Dynamics CRM 2011
In this post I called out every message included in the CRM 2011 SDK that are currently considered deprecated by Microsoft. The only comment I got about it was that it would be better if I suggested alternatives to them all.
4. I will be Speaking at Twin Cities Code Camp Tomorrow if anyone wants to come out. It's FREE!!
My last ditch effort to get people out to see my presentation on CRM development at Code Camp last year. Luckily more people showed to the presentation than viewed this blog-post.
3. My Twin Cities Code Camp Presentation
After my presentation last year I posted my slide deck. According to Google Analytics it was on people's screens for a total of 4 Minutes and 29 Seconds.
2. Delete an Entity in Microsoft Dynamics CRM 2011 Using Jscript or .NET With DeleteEntityRequest
Evidently no one really cares about how to delete an entity (not a record in the system, AN ENTIRE ENTITY) in .NET or Jscript. It got very little activity in the last year or so after it was written.
1. Too Much Technology, Not Enough Life!!
Evidently my daughter sitting next to a toilet and a fun spider picture taken at 936mm (one of my best I might add) wasn't much of a draw. It got mention on Ben Hoskings blog, but beyond that that I don't think anyone else looked at it.
-Happy Tuesday!
Thursday, October 4, 2012
VB.NET Soap Logger for Microsoft Dynamics CRM Updated For OSDP / Office 365 Environments
I have updated my CRM 2011 VB.NET Soap Logger tool. It now works with Office 365 / OSDP orgs. Please check it out. It's based very heavily on the C# version included in the SDK. It basically allows you to write VB.NET code to the organization service and log the soap for the request and response. I also put the new version in CodePlex now that I see there will be some minimal maintenance associated with the tool.
Get the new version of the tool here:
https://vbsoaplogger.codeplex.com/
Here is a link to the original informational blogpost on this tool
http://mileyja.blogspot.com/2012/01/microsoft-dynamics-crm-2011-soap-logger.html
- Happy Thursday!
Get the new version of the tool here:
https://vbsoaplogger.codeplex.com/
Here is a link to the original informational blogpost on this tool
http://mileyja.blogspot.com/2012/01/microsoft-dynamics-crm-2011-soap-logger.html
- Happy Thursday!
Friday, September 28, 2012
The CRM Field Guide - A New Book by Various CRM MVP's Has Been Released
Many of the CRM MVP's banded together and compiled their knowledge to release a stellar book that covers most aspects of CRM. This book, with it's many knowledgeable authors, can be considered the true experts guide when it comes to Microsoft Dynamics CRM 2011.
Bonus: I contributed to a small part of chapter 1 :)
Check it out here:
http://www.crmfieldguide.com/
or buy it from Amazon here:
http://www.amazon.com/The-Field-Guide-Joel-Lindstrom/dp/0981511899/ref=sr_1_1?ie=UTF8&qid=1348848654&sr=8-1&keywords=crm+field+guide
-Happy Monday!
Bonus: I contributed to a small part of chapter 1 :)
Check it out here:
http://www.crmfieldguide.com/
or buy it from Amazon here:
http://www.amazon.com/The-Field-Guide-Joel-Lindstrom/dp/0981511899/ref=sr_1_1?ie=UTF8&qid=1348848654&sr=8-1&keywords=crm+field+guide
-Happy Monday!
Labels:
CRM,
CRM 2011,
Microsoft CRM,
Microsoft Dynamics CRM,
MVP
Monday, September 24, 2012
Dynamics CRM Blogger Strikes Back Against Content Thieves!
In the last week or so I have seen sizable backlash against content thieves in the Dynamics CRM community. Jukka Niiranen as come with a great way to strike back. Check this out!!
http://niiranen.eu/crm/2012/09/getting-back-at-blog-content-thieves/
- Happy Monday!
http://niiranen.eu/crm/2012/09/getting-back-at-blog-content-thieves/
- Happy Monday!
Tuesday, September 18, 2012
Determine if an Entity is Eligible to Participate in a Relationship Type Using VB.NET in Microsoft Dynamics CRM 2011
This illustration shows how to programmatically determine if an entity is eligible to participate in a relationship typ in Microsoft Dynamics CRM 2011 in code using VB.NET.
There are three different SDK web service messages highlighted in this post. They are:
There are three different SDK web service messages highlighted in this post. They are:
- GetValidManyToManyRequest: Get list of entities that can participate in many to many relationships
- GetValidReferencedEntitiesRequest: Get list of entities that can particaipate in one to many relationships as the "many" entity
- GetValidReferencingEntitiesRequest: Get list of entities that can particaipate in one to many relationships as the "one" entity
Ok, here is what the code looks like!
Here's the VB.NET Code:
Dim req As New GetValidManyToManyRequest()
Dim resp As GetValidManyToManyResponse = DirectCast(slos.Execute(req), GetValidManyToManyResponse)
'Get list of entities that can particaipate in one to many relationships as the "many" entity
Dim req2 As New GetValidReferencedEntitiesRequest()
Dim resp2 As GetValidReferencedEntitiesResponse = DirectCast(slos.Execute(req2), GetValidReferencedEntitiesResponse)
'Get list of entities that can particaipate in one to many relationships as the "one" entity
Dim req3 As New GetValidReferencingEntitiesRequest()
Dim resp3 As GetValidReferencingEntitiesResponse = DirectCast(slos.Execute(req3), GetValidReferencingEntitiesResponse)
'now you can get the entitie names this way for each response by examining the response.entitynames property
Thats all there is to it!
I hope this helps!
Labels:
CRM,
CRM 2011,
Microsoft Dynamics CRM,
SDK,
VB.NET
Wednesday, September 12, 2012
Dynamics Xrm Application Speed Builder Project Kicks Off!
I have just kicked off a project to build an application that will hopefully help immensely in the porting of standard database driven applications to Microsoft Dynamics CRM.
The vision is pretty simple:
The current team is (more to come in future most likely):
There is a project live on CodePlex for you to follow if you would like at:
http://xrmspeedy.codeplex.com/
Just understand that there is no code released as of yet as the project still hasn't been coded. :)
-
The vision is pretty simple:
- Analyze the database schema (first db targets will be MySQL and MS Sql Server)
- Allow user to decide what tables should be made into custom entities in CRM and create them
- Analyze foreign keys between between tables in database that correspond to custom entities and build appropriate relationships.
- Allow user to determine on a per-table basis what fields should be added as custom attributes.
- Allow user to determine which of those custom attributes should be placed on the application form.
The current team is (more to come in future most likely):
- Jason Lattimer - Developer
- Maarten Docter - Developer
- Thomas Canaple - Developer
- Myself - Coordinator / Developer
There is a project live on CodePlex for you to follow if you would like at:
http://xrmspeedy.codeplex.com/
Just understand that there is no code released as of yet as the project still hasn't been coded. :)
-
Tuesday, September 11, 2012
Powerful Multi-Threading to the CRM 2011 SOAP Endpoint
I have run into several situations where people want a very quick delete functionality or they have an application that needs to hit the webservice many times in very quick succession. This usually means multi-threading your application and that can cause problems if you hit it too many times too quickly and you can get errors because the available ports get used up and are not recycled fast enough. I have overcame this to some degree in .NET by using stacks and when an atomic operation fails it just get's put back on the stack for another thread to pick up and try again.
It seems that there is another way to crank up the horsepower and increase throughput by changing a couple registry settings. One to increase the number of ports available and another to decrease the amount of time they take to recycle.
Check out more here:
http://community.dynamics.com/product/crm/crmtechnical/b/billoncrm/archive/2009/01/20/crm-webservice-error-58-only-one-usage-of-each-socket-address-40-protocol-47-network-address-47-port-41-is-normally-permitted.aspx
It seems that there is another way to crank up the horsepower and increase throughput by changing a couple registry settings. One to increase the number of ports available and another to decrease the amount of time they take to recycle.
Check out more here:
http://community.dynamics.com/product/crm/crmtechnical/b/billoncrm/archive/2009/01/20/crm-webservice-error-58-only-one-usage-of-each-socket-address-40-protocol-47-network-address-47-port-41-is-normally-permitted.aspx
Labels:
CRM,
CRM 2011,
Microsoft Dynamics CRM,
SDK,
Tricks
Thursday, August 30, 2012
Check Out the Dynamics CRM Optionset Community Library
I found out yesterday that a couple other MVP's put together a community optionset import tool and community library of freely available optionsets. Tanguy Touzard and Jerry Weinstock are to thank for this one. I recommend checking out the free tool and optionsets out there. Also, feel free to contribute your optionsets to the library.
http://www.crmoptionset.com/
- Happy Thursday!
http://www.crmoptionset.com/
- Happy Thursday!
Tuesday, August 28, 2012
List of Currencies Included With Microsoft Dynamics CRM 2011 in XML Format
I got asked the question how to get at the list of currencies in CRM programmatically. I looked everywhere and couldn't find them in the org or server database. I see where it's calling a saved query against some .NET API that is buried in the program. If anyone wants an easy way to access them in a program, here they are in XML format with their codes, precisions, symbols, etc... It doesn't look like you get it very easily at all programmatically.
This is the out of the box list. Remember, you can also add your own user defined currencies in case you made something up like "MileyBucks" in your own little world :)
- Hopefully it helps someone.
-
This is the out of the box list. Remember, you can also add your own user defined currencies in case you made something up like "MileyBucks" in your own little world :)
<DocumentElement><currency><regionname>Afghanistan</regionname><currencyname>افغانى</currencyname><isocurrencycode>AFN</isocurrencycode><currencysymbol>؋</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Albania</regionname><currencyname>Lek</currencyname><isocurrencycode>ALL</isocurrencycode><currencysymbol>Lek</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Algeria</regionname><currencyname>Dinar</currencyname><isocurrencycode>DZD</isocurrencycode><currencysymbol>DZD</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Algeria</regionname><currencyname>دينار جزائري</currencyname><isocurrencycode>DZD</isocurrencycode><currencysymbol>د.ج.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Argentina</regionname><currencyname>Peso</currencyname><isocurrencycode>ARS</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Armenia</regionname><currencyname>դրամ</currencyname><isocurrencycode>AMD</isocurrencycode><currencysymbol>դր.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Australia</regionname><currencyname>Australian Dollar</currencyname><isocurrencycode>AUD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Austria</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Azerbaijan</regionname><currencyname>manat</currencyname><isocurrencycode>AZN</isocurrencycode><currencysymbol>man.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Azerbaijan</regionname><currencyname>рубль</currencyname><isocurrencycode>AZN</isocurrencycode><currencysymbol>ман.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Bahrain</regionname><currencyname>دينار بحريني</currencyname><isocurrencycode>BHD</isocurrencycode><currencysymbol>د.ب.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Bangladesh</regionname><currencyname>টাকা</currencyname><isocurrencycode>BDT</isocurrencycode><currencysymbol>৳</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Belarus</regionname><currencyname>рубль</currencyname><isocurrencycode>BYR</isocurrencycode><currencysymbol>р.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Belgium</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Belize</regionname><currencyname>Belize Dollar</currencyname><isocurrencycode>BZD</isocurrencycode><currencysymbol>BZ$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Bolivarian Republic of Venezuela</regionname><currencyname>Bolívar</currencyname><isocurrencycode>VEF</isocurrencycode><currencysymbol>Bs. F.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Bolivia</regionname><currencyname>Boliviano</currencyname><isocurrencycode>BOB</isocurrencycode><currencysymbol>$b</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Bosnia and Herzegovina</regionname><currencyname>konvertibilna marka</currencyname><isocurrencycode>BAM</isocurrencycode><currencysymbol>KM</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Bosnia and Herzegovina</regionname><currencyname>конвертибилна марка</currencyname><isocurrencycode>BAM</isocurrencycode><currencysymbol>КМ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Brazil</regionname><currencyname>Real</currencyname><isocurrencycode>BRL</isocurrencycode><currencysymbol>R$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Brunei Darussalam</regionname><currencyname>Ringgit</currencyname><isocurrencycode>BND</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Bulgaria</regionname><currencyname>България лев</currencyname><isocurrencycode>BGN</isocurrencycode><currencysymbol>лв.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Cambodia</regionname><currencyname>x179Aៀល</currencyname><isocurrencycode>KHR</isocurrencycode><currencysymbol>៛</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Canada</regionname><currencyname>ᑲᓇᑕᐅᑉ ᑮᓇᐅᔭᖓ</currencyname><isocurrencycode>CAD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Canada</regionname><currencyname>Canadian Dollar</currencyname><isocurrencycode>CAD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Canada</regionname><currencyname>Kanataup Kiinaujanga;</currencyname><isocurrencycode>CAD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Canada</regionname><currencyname>Dollar canadien</currencyname><isocurrencycode>CAD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Caribbean</regionname><currencyname>US Dollar</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Chile</regionname><currencyname>Peso</currencyname><isocurrencycode>CLP</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Colombia</regionname><currencyname>Peso</currencyname><isocurrencycode>COP</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Costa Rica</regionname><currencyname>Colón</currencyname><isocurrencycode>CRC</isocurrencycode><currencysymbol>₡</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Croatia</regionname><currencyname>hrvatska kuna</currencyname><isocurrencycode>HRK</isocurrencycode><currencysymbol>kn</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Czech Republic</regionname><currencyname>Koruna Česká</currencyname><isocurrencycode>CZK</isocurrencycode><currencysymbol>Kč</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Denmark</regionname><currencyname>Dansk krone</currencyname><isocurrencycode>DKK</isocurrencycode><currencysymbol>kr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Dominican Republic</regionname><currencyname>Peso</currencyname><isocurrencycode>DOP</isocurrencycode><currencysymbol>RD$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Ecuador</regionname><currencyname>US Dolar</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Egypt</regionname><currencyname>جنيه مصري</currencyname><isocurrencycode>EGP</isocurrencycode><currencysymbol>ج.م.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>El Salvador</regionname><currencyname>US Dolar</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Estonia</regionname><currencyname>Kroon</currencyname><isocurrencycode>EEK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Ethiopia</regionname><currencyname>ብር</currencyname><isocurrencycode>ETB</isocurrencycode><currencysymbol>ETB</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Faroe Islands</regionname><currencyname>Dansk krone</currencyname><isocurrencycode>DKK</isocurrencycode><currencysymbol>kr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Finland</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Finland</regionname><currencyname>evro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>France</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Georgia</regionname><currencyname>ლარი</currencyname><isocurrencycode>GEL</isocurrencycode><currencysymbol>Lari</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Germany</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Greece</regionname><currencyname>ευρώ</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Greenland</regionname><currencyname>korunni</currencyname><isocurrencycode>DKK</isocurrencycode><currencysymbol>kr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Guatemala</regionname><currencyname>Quetzal</currencyname><isocurrencycode>GTQ</isocurrencycode><currencysymbol>Q</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Honduras</regionname><currencyname>Lempira</currencyname><isocurrencycode>HNL</isocurrencycode><currencysymbol>L.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Hong Kong S.A.R.</regionname><currencyname>港幣</currencyname><isocurrencycode>HKD</isocurrencycode><currencysymbol>HK$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Hungary</regionname><currencyname>forint</currencyname><isocurrencycode>HUF</isocurrencycode><currencysymbol>Ft</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Iceland</regionname><currencyname>Króna</currencyname><isocurrencycode>ISK</isocurrencycode><currencysymbol>kr.</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>India</regionname><currencyname>रुपया</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>रु</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>টাকা</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>টা</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>ਰੁਪਿਆ</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ਰੁ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>રૂપિયો</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>રૂ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>ଟଙ୍କା</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ଟ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>ரூபாய்</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ரூ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>రూపాయి</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>రూ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>ರೂಪಾಯಿ</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ರೂ</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>രൂപ</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ക</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>টকা</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>ট</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>रु्यकम्</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>रु</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>रुपय</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>रु</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>India</regionname><currencyname>Rupee;</currencyname><isocurrencycode>INR</isocurrencycode><currencysymbol>Rs.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Indonesia</regionname><currencyname>Rupiah</currencyname><isocurrencycode>IDR</isocurrencycode><currencysymbol>Rp</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Iran</regionname><currencyname>رىال</currencyname><isocurrencycode>IRR</isocurrencycode><currencysymbol>ريال</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Iraq</regionname><currencyname>دينار عراقي</currencyname><isocurrencycode>IQD</isocurrencycode><currencysymbol>د.ع.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Ireland</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Islamic Republic of Pakistan</regionname><currencyname>روپيه</currencyname><isocurrencycode>PKR</isocurrencycode><currencysymbol>Rs</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Israel</regionname><currencyname>שקל חדש</currencyname><isocurrencycode>ILS</isocurrencycode><currencysymbol>₪</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Italy</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Jamaica</regionname><currencyname>Jamaican Dollar</currencyname><isocurrencycode>JMD</isocurrencycode><currencysymbol>J$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Japan</regionname><currencyname>円</currencyname><isocurrencycode>JPY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Jordan</regionname><currencyname>دينار اردني</currencyname><isocurrencycode>JOD</isocurrencycode><currencysymbol>د.ا.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Kazakhstan</regionname><currencyname>Т</currencyname><isocurrencycode>KZT</isocurrencycode><currencysymbol>Т</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Kenya</regionname><currencyname>Shilingi</currencyname><isocurrencycode>KES</isocurrencycode><currencysymbol>S</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Korea</regionname><currencyname>원</currencyname><isocurrencycode>KRW</isocurrencycode><currencysymbol>₩</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Kuwait</regionname><currencyname>دينار كويتي</currencyname><isocurrencycode>KWD</isocurrencycode><currencysymbol>د.ك.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Kyrgyzstan</regionname><currencyname>сом</currencyname><isocurrencycode>KGS</isocurrencycode><currencysymbol>сом</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Lao P.D.R.</regionname><currencyname>ກີບ</currencyname><isocurrencycode>LAK</isocurrencycode><currencysymbol>₭</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Latvia</regionname><currencyname>Lats</currencyname><isocurrencycode>LVL</isocurrencycode><currencysymbol>Ls</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Lebanon</regionname><currencyname>ليرة لبناني</currencyname><isocurrencycode>LBP</isocurrencycode><currencysymbol>ل.ل.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Libya</regionname><currencyname>دينار ليبي</currencyname><isocurrencycode>LYD</isocurrencycode><currencysymbol>د.ل.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Liechtenstein</regionname><currencyname>Schweizer Franken</currencyname><isocurrencycode>CHF</isocurrencycode><currencysymbol>CHF</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Lithuania</regionname><currencyname>Litas</currencyname><isocurrencycode>LTL</isocurrencycode><currencysymbol>Lt</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Luxembourg</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Luxembourg</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Macao S.A.R.</regionname><currencyname>澳門幣</currencyname><isocurrencycode>MOP</isocurrencycode><currencysymbol>MOP</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Macedonia (FYROM)</regionname><currencyname>денар</currencyname><isocurrencycode>MKD</isocurrencycode><currencysymbol>ден.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Malaysia</regionname><currencyname>Ringgit Malaysia</currencyname><isocurrencycode>MYR</isocurrencycode><currencysymbol>RM</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Malaysia</regionname><currencyname>Malaysian Ringgit</currencyname><isocurrencycode>MYR</isocurrencycode><currencysymbol>RM</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Maldives</regionname><currencyname>ރުފިޔާ</currencyname><isocurrencycode>MVR</isocurrencycode><currencysymbol>ރ.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Malta</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Mexico</regionname><currencyname>Peso</currencyname><isocurrencycode>MXN</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Mongolia</regionname><currencyname>Төгрөг</currencyname><isocurrencycode>MNT</isocurrencycode><currencysymbol>₮</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Montenegro</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Montenegro</regionname><currencyname>Еуро</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Morocco</regionname><currencyname>درهم مغربي</currencyname><isocurrencycode>MAD</isocurrencycode><currencysymbol>د.م.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Nepal</regionname><currencyname>रुपैयाँ</currencyname><isocurrencycode>NPR</isocurrencycode><currencysymbol>रु</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Netherlands</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>New Zealand</regionname><currencyname>tāra</currencyname><isocurrencycode>NZD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>New Zealand</regionname><currencyname>New Zealand Dollar</currencyname><isocurrencycode>NZD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Nicaragua</regionname><currencyname>Córdoba</currencyname><isocurrencycode>NIO</isocurrencycode><currencysymbol>C$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Nigeria</regionname><currencyname>Naira</currencyname><isocurrencycode>NIO</isocurrencycode><currencysymbol>N</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Norway</regionname><currencyname>Norsk krone</currencyname><isocurrencycode>NOK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Norway</regionname><currencyname>kruvdno</currencyname><isocurrencycode>NOK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Norway</regionname><currencyname>kråvnnå</currencyname><isocurrencycode>NOK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Norway</regionname><currencyname>kråvnoe</currencyname><isocurrencycode>NOK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Oman</regionname><currencyname>ريال عماني</currencyname><isocurrencycode>OMR</isocurrencycode><currencysymbol>ر.ع.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Panama</regionname><currencyname>Balboa</currencyname><isocurrencycode>PAB</isocurrencycode><currencysymbol>B/.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Paraguay</regionname><currencyname>Guaraní</currencyname><isocurrencycode>PYG</isocurrencycode><currencysymbol>Gs</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>People's Republic of China</regionname><currencyname>མི་དམངས་ཤོག་སྒོཪ།</currencyname><isocurrencycode>CNY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>People's Republic of China</regionname><currencyname>ꎆꃀ</currencyname><isocurrencycode>CNY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>People's Republic of China</regionname><currencyname>خەلق پۇلى</currencyname><isocurrencycode>CNY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>People's Republic of China</regionname><currencyname>人民币</currencyname><isocurrencycode>CNY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>People's Republic of China</regionname><currencyname>ᠠᠷᠠᠳ ᠤᠨ ᠵᠤᠭᠤᠰ</currencyname><isocurrencycode>CNY</isocurrencycode><currencysymbol>¥</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Peru</regionname><currencyname>Nuevo Sol</currencyname><isocurrencycode>PEN</isocurrencycode><currencysymbol>S/.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Philippines</regionname><currencyname>Philippine Peso</currencyname><isocurrencycode>PHP</isocurrencycode><currencysymbol>PhP</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Philippines</regionname><currencyname>Philippine Peso</currencyname><isocurrencycode>PHP</isocurrencycode><currencysymbol>Php</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Poland</regionname><currencyname>Złoty</currencyname><isocurrencycode>PLN</isocurrencycode><currencysymbol>zł</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Portugal</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Principality of Monaco</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Puerto Rico</regionname><currencyname>US Dollar</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Qatar</regionname><currencyname>ريال قطري</currencyname><isocurrencycode>QAR</isocurrencycode><currencysymbol>ر.ق.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Romania</regionname><currencyname>Leu</currencyname><isocurrencycode>RON</isocurrencycode><currencysymbol>lei</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Russia</regionname><currencyname>рубль</currencyname><isocurrencycode>RUB</isocurrencycode><currencysymbol>р.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Russia</regionname><currencyname>һум</currencyname><isocurrencycode>RUB</isocurrencycode><currencysymbol>һ.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Russia</regionname><currencyname>солкуобай</currencyname><isocurrencycode>RUB</isocurrencycode><currencysymbol>с.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Rwanda</regionname><currencyname>Ifaranga</currencyname><isocurrencycode>RWF</isocurrencycode><currencysymbol>RWF</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Saudi Arabia</regionname><currencyname>ريال سعودي</currencyname><isocurrencycode>SAR</isocurrencycode><currencysymbol>ر.س.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Senegal</regionname><currencyname>XOF Senegal</currencyname><isocurrencycode>XOF</isocurrencycode><currencysymbol>XOF</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Serbia</regionname><currencyname>dinar</currencyname><isocurrencycode>RSD</isocurrencycode><currencysymbol>Din.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Serbia</regionname><currencyname>динар</currencyname><isocurrencycode>RSD</isocurrencycode><currencysymbol>Дин.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Serbia and Montenegro (Former)</regionname><currencyname>dinar</currencyname><isocurrencycode>CSD</isocurrencycode><currencysymbol>Din.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Serbia and Montenegro (Former)</regionname><currencyname>динар</currencyname><isocurrencycode>CSD</isocurrencycode><currencysymbol>Дин.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Singapore</regionname><currencyname>新币</currencyname><isocurrencycode>SGD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Singapore</regionname><currencyname>Singapore Dollar</currencyname><isocurrencycode>SGD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Slovakia</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Slovenia</regionname><currencyname>Euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>South Africa</regionname><currencyname>Rand</currencyname><isocurrencycode>ZAR</isocurrencycode><currencysymbol>R</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Spain</regionname><currencyname>euro</currencyname><isocurrencycode>EUR</isocurrencycode><currencysymbol>€</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Sri Lanka</regionname><currencyname>රුපියල්</currencyname><isocurrencycode>LKR</isocurrencycode><currencysymbol>රු.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Sweden</regionname><currencyname>Svensk krona</currencyname><isocurrencycode>SEK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Sweden</regionname><currencyname>kruvdno</currencyname><isocurrencycode>SEK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Sweden</regionname><currencyname>kråvnnå</currencyname><isocurrencycode>SEK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Sweden</regionname><currencyname>kråvnoe</currencyname><isocurrencycode>SEK</isocurrencycode><currencysymbol>kr</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Switzerland</regionname><currencyname>Franc svizzer</currencyname><isocurrencycode>CHF</isocurrencycode><currencysymbol>fr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Switzerland</regionname><currencyname>Schweizer Franken</currencyname><isocurrencycode>CHF</isocurrencycode><currencysymbol>Fr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Switzerland</regionname><currencyname>Franco svizzero</currencyname><isocurrencycode>CHF</isocurrencycode><currencysymbol>fr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Switzerland</regionname><currencyname>Franc suisse</currencyname><isocurrencycode>CHF</isocurrencycode><currencysymbol>fr.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Syria</regionname><currencyname>جنيه سوري</currencyname><isocurrencycode>SYP</isocurrencycode><currencysymbol>ل.س.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Syria</regionname><currencyname>ليرة سوري</currencyname><isocurrencycode>SYP</isocurrencycode><currencysymbol>ل.س.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Taiwan</regionname><currencyname>新台幣</currencyname><isocurrencycode>TWD</isocurrencycode><currencysymbol>NT$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Tajikistan</regionname><currencyname>рубл</currencyname><isocurrencycode>TJS</isocurrencycode><currencysymbol>т.р.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Thailand</regionname><currencyname>บาท</currencyname><isocurrencycode>THB</isocurrencycode><currencysymbol>฿</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Trinidad and Tobago</regionname><currencyname>Trinidad Dollar</currencyname><isocurrencycode>TTD</isocurrencycode><currencysymbol>TT$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Tunisia</regionname><currencyname>دينار تونسي</currencyname><isocurrencycode>TND</isocurrencycode><currencysymbol>د.ت.</currencysymbol><currencyprecision>3</currencyprecision></currency><currency><regionname>Turkey</regionname><currencyname>Türk Lirası</currencyname><isocurrencycode>TRY</isocurrencycode><currencysymbol>TL</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Turkmenistan</regionname><currencyname>manat</currencyname><isocurrencycode>TMT</isocurrencycode><currencysymbol>m.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>U.A.E.</regionname><currencyname>درهم اماراتي</currencyname><isocurrencycode>AED</isocurrencycode><currencysymbol>د.إ.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Ukraine</regionname><currencyname>гривня</currencyname><isocurrencycode>UAH</isocurrencycode><currencysymbol>₴</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>United Kingdom</regionname><currencyname>UK Pound Sterling</currencyname><isocurrencycode>GBP</isocurrencycode><currencysymbol>£</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>United Kingdom</regionname><currencyname>Nota Bhreatannach</currencyname><isocurrencycode>GBP</isocurrencycode><currencysymbol>£</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>United Kingdom</regionname><currencyname>Pound Sterling</currencyname><isocurrencycode>GBP</isocurrencycode><currencysymbol>£</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>United States</regionname><currencyname>US Dollar</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>United States</regionname><currencyname>Dólar de EE.UU.</currencyname><isocurrencycode>USD</isocurrencycode><currencysymbol>$</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Uruguay</regionname><currencyname>Peso</currencyname><isocurrencycode>UYU</isocurrencycode><currencysymbol>$U</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Uzbekistan</regionname><currencyname>so‘m</currencyname><isocurrencycode>UZS</isocurrencycode><currencysymbol>so'm</currencysymbol><currencyprecision>0</currencyprecision></currency><currency><regionname>Uzbekistan</regionname><currencyname>сўм</currencyname><isocurrencycode>UZS</isocurrencycode><currencysymbol>сўм</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Vietnam</regionname><currencyname>Đồng</currencyname><isocurrencycode>VND</isocurrencycode><currencysymbol>₫</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Yemen</regionname><currencyname>ريال يمني</currencyname><isocurrencycode>YER</isocurrencycode><currencysymbol>ر.ي.</currencysymbol><currencyprecision>2</currencyprecision></currency><currency><regionname>Zimbabwe</regionname><currencyname>Zimbabwe Dollar</currencyname><isocurrencycode>ZWL</isocurrencycode><currencysymbol>Z$</currencysymbol><currencyprecision>2</currencyprecision></currency></DocumentElement>
- Hopefully it helps someone.
-
Monday, August 27, 2012
Hmm... Maybe I Should Go "Dark" For Awhile.
Ok, there is very little new that I can in .NET 4.5 and Visual Studio 2012 from a code standpoint apart from the new metro stuff concerning Javascript and HTML 5 (all the Windows 8 goodness), but gosh darn it I love this interface. I first fired it up and thought was absolutely sterile and kinda lame, but then I found out I could go Tools - Options - Environment - General and change my Color Theme to Dark.
I don't know if I can ever go back to Visual Studio 2010. The other really helpful feature I have found for you people with more than one monitor is Rafting.
Friday, August 24, 2012
Microsoft Dynamics CRM 2011 Compatibility With .NET 4.5
I have been doing some tests lately and have had a lot of luck recently with .NET 4.5 being compatible with Microsoft Dynamics CRM 2011. I haven't run into an unsuccessful scenario yet but I am wondering if anyone else in the community has.
According to this KB article it seems to be compatible since Update Rollup 8:
http://support.microsoft.com/kb/2669061
Here is what I have tried so far and all of these worked:
Interestingly enough my first .NET 4.5 plugin fired successfully even though .NET 4.5 wasn't installed on the CRM server. You only need the 4.5 framework installed if you use new 4.5 functionality. When I added some new code functionality in my plugin it did fail on that line of code until I installed the 4.5 framework on the server and rebooted. That fixed the issue and the plugin fired normally.
I am wondering if anyone has found anything that doesn't work so far? Let me know!
-Happy Friday!
According to this KB article it seems to be compatible since Update Rollup 8:
http://support.microsoft.com/kb/2669061
Here is what I have tried so far and all of these worked:
- Creating applications that talk to CRM compiled in 4.5 that reference the 4.0 assemblies included with the SDK
- Registering 4.5 compiled plugins using the plugin registration tool (also recompiled to 4.5).
- Using new .NET 4.5 functionality in plugins (required 4.5 framework to be installed on server and a server reboot)
Interestingly enough my first .NET 4.5 plugin fired successfully even though .NET 4.5 wasn't installed on the CRM server. You only need the 4.5 framework installed if you use new 4.5 functionality. When I added some new code functionality in my plugin it did fail on that line of code until I installed the 4.5 framework on the server and rebooted. That fixed the issue and the plugin fired normally.
I am wondering if anyone has found anything that doesn't work so far? Let me know!
-Happy Friday!
Wednesday, August 22, 2012
Query a User's Schedule for Open Time Slots Using VB.NET in Microsoft Dynamics CRM 2011
This illustration shows how to query a user's schedule for open time blocks using VB.NET in Microsoft Dynamics CRM 2011 with QueryScheduleRequest.
If you need help instantiating a service object in .NET within a plugin check out this post:
http://mileyja.blogspot.com/2011/04/instantiating-service-object-within.html
Ok, here is what the code looks like!
In VB.NET
Dim reqWAI As New WhoAmIRequest()
Dim respWAI As WhoAmIResponse = DirectCast(_serviceProxy.Execute(reqWAI), WhoAmIResponse)
Dim reqSchedule As New QueryScheduleRequest()
reqSchedule.ResourceId = respWAI.UserId
reqSchedule.Start = DateTime.Now
reqSchedule.End = DateTime.Today.AddDays(3)
Dim tmc As New TimeCode()
tmc = TimeCode.Available
reqSchedule.TimeCodes = New TimeCode() {TimeCode.Available}
Dim respSchedule As QueryScheduleResponse = DirectCast(slos.Execute(reqSchedule), QueryScheduleResponse)
If respSchedule.TimeInfos.Length > 0 Then
'act on timeslots
Else
'user has no free time that meets these parameters
End If
If you need help instantiating a service object in .NET within a plugin check out this post:
http://mileyja.blogspot.com/2011/04/instantiating-service-object-within.html
I hope this helps!
-
-
Labels:
CRM,
CRM 2011,
Microsoft Dynamics CRM,
SDK,
VB.NET
Monday, August 20, 2012
Query a User's Schedule for Open Time Blocks Using .NET and Jscript in Microsoft Dynamics CRM 2011
This illustration shows how to query a user's schedule for open time blocks using C# or Jscript in Microsoft Dynamics CRM 2011 with QueryScheduleRequest.
If you need help instantiating a service object in .NET within a plugin check out this post:
http://mileyja.blogspot.com/2011/04/instantiating-service-object-within.html
Ok, here is what the code looks like!
First in C#:
WhoAmIRequest reqWAI = new WhoAmIRequest();
WhoAmIResponse respWAI = (WhoAmIResponse)_serviceProxy.Execute(reqWAI);
QueryScheduleRequest reqSchedule = new QueryScheduleRequest();
reqSchedule.ResourceId = respWAI.UserId;
reqSchedule.Start = DateTime.Now;
reqSchedule.End = DateTime.Today.AddDays(3);
reqSchedule.TimeCodes = new TimeCode[] { TimeCode.Available };
QueryScheduleResponse respSchedule = (QueryScheduleResponse)service.Execute(reqSchedule);
if (respSchedule.TimeInfos.Length > 0)
{
//act on time slots
}
If you need help instantiating a service object in .NET within a plugin check out this post:
http://mileyja.blogspot.com/2011/04/instantiating-service-object-within.html
Now here is the Jscript nicely formatted by the CRM 2011 SOAP formatter. Available at: http://crm2011soap.codeplex.com/
Now in Jscript
This example is asynchronous, if you want to learn how to make JScript SOAP calls synchronously please visit this post: http://mileyja.blogspot.com/2011/07/using-jscript-to-access-soap-web.html
Now in Jscript
This example is asynchronous, if you want to learn how to make JScript SOAP calls synchronously please visit this post: http://mileyja.blogspot.com/2011/07/using-jscript-to-access-soap-web.html
if (typeof (SDK) == "undefined")
{ SDK = { __namespace: true }; }
//This will establish a more unique namespace for functions in this library. This will reduce the
// potential for functions to be overwritten due to a duplicate name when the library is loaded.
SDK.SAMPLES = {
_getServerUrl: function () {
///<summary>
/// Returns the URL for the SOAP endpoint using the context information available in the form
/// or HTML Web resource.
///</summary>
var ServicePath = "/XRMServices/2011/Organization.svc/web";
var serverUrl = "";
if (typeof GetGlobalContext == "function") {
var context = GetGlobalContext();
serverUrl = context.getServerUrl();
}
else {
if (typeof Xrm.Page.context == "object") {
serverUrl = Xrm.Page.context.getServerUrl();
}
else
{ throw new Error("Unable to access the server URL"); }
}
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
return serverUrl + ServicePath;
},
QueryScheduleRequest: function () {
var requestMain = ""
requestMain += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
requestMain += " <s:Body>";
requestMain += " <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
requestMain += " <request i:type=\"b:QueryScheduleRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
requestMain += " <a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
requestMain += " <a:KeyValuePairOfstringanyType>";
requestMain += " <c:key>ResourceId</c:key>";
requestMain += " <c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">6e219f51-0310-4c4d-8c60-1c524e2ba7b3</c:value>";
requestMain += " </a:KeyValuePairOfstringanyType>";
requestMain += " <a:KeyValuePairOfstringanyType>";
requestMain += " <c:key>Start</c:key>";
requestMain += " <c:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">2012-08-20T10:10:38.910063-05:00</c:value>";
requestMain += " </a:KeyValuePairOfstringanyType>";
requestMain += " <a:KeyValuePairOfstringanyType>";
requestMain += " <c:key>End</c:key>";
requestMain += " <c:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">2012-08-23T00:00:00-05:00</c:value>";
requestMain += " </a:KeyValuePairOfstringanyType>";
requestMain += " <a:KeyValuePairOfstringanyType>";
requestMain += " <c:key>TimeCodes</c:key>";
requestMain += " <c:value i:type=\"b:ArrayOfTimeCode\">";
requestMain += " <b:TimeCode>Available</b:TimeCode>";
requestMain += " </c:value>";
requestMain += " </a:KeyValuePairOfstringanyType>";
requestMain += " </a:Parameters>";
requestMain += " <a:RequestId i:nil=\"true\" />";
requestMain += " <a:RequestName>QuerySchedule</a:RequestName>";
requestMain += " </request>";
requestMain += " </Execute>";
requestMain += " </s:Body>";
requestMain += "</s:Envelope>";
var req = new XMLHttpRequest();
req.open("POST", SDK.SAMPLES._getServerUrl(), true)
req.setRequestHeader("Accept", "application/xml, text/xml, */*");
req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
var successCallback = null;
var errorCallback = null;
req.onreadystatechange = function () { SDK.SAMPLES.QueryScheduleResponse(req, successCallback, errorCallback); };
req.send(requestMain);
},
QueryScheduleResponse: function (req, successCallback, errorCallback) {
///<summary>
/// Recieves the assign response
///</summary>
///<param name="req" Type="XMLHttpRequest">
/// The XMLHttpRequest response
///</param>
///<param name="successCallback" Type="Function">
/// The function to perform when an successfult response is returned.
/// For this message no data is returned so a success callback is not really necessary.
///</param>
///<param name="errorCallback" Type="Function">
/// The function to perform when an error is returned.
/// This function accepts a JScript error returned by the _getError function
///</param>
if (req.readyState == 4) {
if (req.status == 200) {
if (successCallback != null)
{ successCallback(); }
}
else {
errorCallback(SDK.SAMPLES._getError(req.responseXML));
}
}
},
_getError: function (faultXml) {
///<summary>
/// Parses the WCF fault returned in the event of an error.
///</summary>
///<param name="faultXml" Type="XML">
/// The responseXML property of the XMLHttpRequest response.
///</param>
var errorMessage = "Unknown Error (Unable to parse the fault)";
if (typeof faultXml == "object") {
try {
var bodyNode = faultXml.firstChild.firstChild;
//Retrieve the fault node
for (var i = 0; i < bodyNode.childNodes.length; i++) {
var node = bodyNode.childNodes[i];
//NOTE: This comparison does not handle the case where the XML namespace changes
if ("s:Fault" == node.nodeName) {
for (var j = 0; j < node.childNodes.length; j++) {
var faultStringNode = node.childNodes[j];
if ("faultstring" == faultStringNode.nodeName) {
errorMessage = faultStringNode.text;
break;
}
}
break;
}
}
}
catch (e) { };
}
return new Error(errorMessage);
},
__namespace: true
};
To understand how to parse the response please review my post on using the DOM parser.
Now you can call the SDK.SAMPLES.QueryScheduleRequest function from your form jscript handler.
Thats all there is to it!
-
-
Friday, August 17, 2012
Any Volunteers for CRM 2011 Community Project
I am planning to build a CodePlex project to speed up XRM development of apps and make apps much easier to port to CRM 2011. If a developer type that would love to help out, please contact me on my about me page or shoot me a note on Linked IN.
- Thanks!
- Thanks!
Labels:
Community,
CRM,
CRM 2011,
Microsoft Dynamics CRM
MSDN Just Released Windows 8 RTM and Visual Studio 2012 RTM
In case anyone hasn't noticed, yesterday MSDN released Visual Studio 2012 RTM and Windows 8 RTM. So if you have an MSDN license I highly recommend going out and checking them out.
- Hope that makes for a happy Friday!
- Hope that makes for a happy Friday!
Friday, August 10, 2012
A New Blog You Might be Interested in If You Use Dynamics CRM Online
If you have Dynamics CRM Online or are an implementer of Dynamics CRM Online you might want to follow this new blog that has just been started by the product team.
I just wanted to drop a quick note that the Dynamics CRM Online Blog is now live: https://community.dynamics.
Have a great day!
Wednesday, August 8, 2012
Query Audit Data in Microsoft Dynamics CRM 2011 to Determine When A User Last Logged In
This example will show you how to Query audit data in .NET (C#) and Jscript to determine when a user last logged in to the system.
Important Notes: The way access auditing currently works in CRM it will only record access to the system every 4 hours for someone. So you can tell when someone logged in, but you won't be able to tell when they logged in again unless the subsequent login was more than four hours later. Also, access auditing wasn't added to CRM 2011 until Update Rollup 5. So you need to have CRM Online or On-Premise with at least Update Rollup 5 installed to use access auditing.
C# Example:
Now in J-SCRIPT :
Now you can call this jscript from a webresource by calling SDK.SAMPLES.GetUserLastLoggedIn() All you should need to change (pass in) with this particular call would be the guid of the user you want to get the last access record for.
- I hope this helps
-
Important Notes: The way access auditing currently works in CRM it will only record access to the system every 4 hours for someone. So you can tell when someone logged in, but you won't be able to tell when they logged in again unless the subsequent login was more than four hours later. Also, access auditing wasn't added to CRM 2011 until Update Rollup 5. So you need to have CRM Online or On-Premise with at least Update Rollup 5 installed to use access auditing.
C# Example:
RetrieveMultipleRequest rmr = new RetrieveMultipleRequest();
RetrieveMultipleResponse resp = new RetrieveMultipleResponse();
SystemUser wr = new SystemUser();
QueryExpression query = new QueryExpression()
{
EntityName = "audit",
ColumnSet = new ColumnSet(true),
Criteria = new FilterExpression
{
FilterOperator = LogicalOperator.And,
Conditions =
{
new ConditionExpression
{
AttributeName = "operation",
Operator = ConditionOperator.Equal,
Values = { 4 } //access
},
new ConditionExpression
{
AttributeName = "objectid",
Operator = ConditionOperator.Equal,
Values = { "6e219f51-0310-4c4d-8c60-1c524e2ba7b3" } //my user id
}
//
}
},
Orders =
{
new OrderExpression
{
AttributeName = "createdon",
OrderType = OrderType.Descending
}
}
};
rmr.Query = query;
resp = (RetrieveMultipleResponse)slos.Execute(rmr);
Now in J-SCRIPT :
if (typeof (SDK) == "undefined")
{ SDK = { __namespace: true }; }
//This will establish a more unique namespace for functions in this library. This will reduce the
// potential for functions to be overwritten due to a duplicate name when the library is loaded.
SDK.SAMPLES = {
_getServerUrl: function () {
///<summary>
/// Returns the URL for the SOAP endpoint using the context information available in the form
/// or HTML Web resource.
///</summary>
var ServicePath = "/XRMServices/2011/Organization.svc/web";
var serverUrl = "";
if (typeof GetGlobalContext == "function") {
var context = GetGlobalContext();
serverUrl = context.getServerUrl();
}
else {
if (typeof Xrm.Page.context == "object") {
serverUrl = Xrm.Page.context.getServerUrl();
}
else
{ throw new Error("Unable to access the server URL"); }
}
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
return serverUrl + ServicePath;
},
GetUserLastLoggedInRequest: function () {
var requestMain = ""
requestMain += "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
requestMain += " <s:Body>";
requestMain += " <Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
requestMain += " <request i:type=\"a:RetrieveMultipleRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
requestMain += " <a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
requestMain += " <a:KeyValuePairOfstringanyType>";
requestMain += " <b:key>Query</b:key>";
requestMain += " <b:value i:type=\"a:QueryExpression\">";
requestMain += " <a:ColumnSet>";
requestMain += " <a:AllColumns>true</a:AllColumns>";
requestMain += " <a:Columns xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\" />";
requestMain += " </a:ColumnSet>";
requestMain += " <a:Criteria>";
requestMain += " <a:Conditions>";
requestMain += " <a:ConditionExpression>";
requestMain += " <a:AttributeName>operation</a:AttributeName>";
requestMain += " <a:Operator>Equal</a:Operator>";
requestMain += " <a:Values xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">";
requestMain += " <c:anyType i:type=\"d:int\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">4</c:anyType>";
requestMain += " </a:Values>";
requestMain += " </a:ConditionExpression>";
requestMain += " <a:ConditionExpression>";
requestMain += " <a:AttributeName>objectid</a:AttributeName>";
requestMain += " <a:Operator>Equal</a:Operator>";
requestMain += " <a:Values xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">";
requestMain += " <c:anyType i:type=\"d:string\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">6e219f51-0310-4c4d-8c60-1c524e2ba7b3</c:anyType>";
requestMain += " </a:Values>";
requestMain += " </a:ConditionExpression>";
requestMain += " </a:Conditions>";
requestMain += " <a:FilterOperator>And</a:FilterOperator>";
requestMain += " <a:Filters />";
requestMain += " </a:Criteria>";
requestMain += " <a:Distinct>false</a:Distinct>";
requestMain += " <a:EntityName>audit</a:EntityName>";
requestMain += " <a:LinkEntities />";
requestMain += " <a:Orders>";
requestMain += " <a:OrderExpression>";
requestMain += " <a:AttributeName>createdon</a:AttributeName>";
requestMain += " <a:OrderType>Descending</a:OrderType>";
requestMain += " </a:OrderExpression>";
requestMain += " </a:Orders>";
requestMain += " <a:PageInfo>";
requestMain += " <a:Count>0</a:Count>";
requestMain += " <a:PageNumber>0</a:PageNumber>";
requestMain += " <a:PagingCookie i:nil=\"true\" />";
requestMain += " <a:ReturnTotalRecordCount>false</a:ReturnTotalRecordCount>";
requestMain += " </a:PageInfo>";
requestMain += " <a:NoLock>false</a:NoLock>";
requestMain += " </b:value>";
requestMain += " </a:KeyValuePairOfstringanyType>";
requestMain += " </a:Parameters>";
requestMain += " <a:RequestId i:nil=\"true\" />";
requestMain += " <a:RequestName>RetrieveMultiple</a:RequestName>";
requestMain += " </request>";
requestMain += " </Execute>";
requestMain += " </s:Body>";
requestMain += "</s:Envelope>";
var req = new XMLHttpRequest();
req.open("POST", SDK.SAMPLES._getServerUrl(), false)
req.setRequestHeader("Accept", "application/xml, text/xml, */*");
req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
req.send(requestMain);
//work with the response here
//var strResponse = req.responseXML.xml;
//alert(strResponse.toString());
},
__namespace: true
};
Now you can call this jscript from a webresource by calling SDK.SAMPLES.GetUserLastLoggedIn() All you should need to change (pass in) with this particular call would be the guid of the user you want to get the last access record for.
- I hope this helps
-
Subscribe to:
Posts (Atom)