<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>HealthVault FAQ</title><link>http://blogs.msdn.com/healthvaultfaq/default.aspx</link><description>This blog hosts FAQ questions (and answers) for developers using the HealthVault SDK</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Updating an application configuration in Production</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/11/09/updating-an-application-configuration-in-production.aspx</link><pubDate>Mon, 09 Nov 2009 22:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919839</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9919839.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9919839</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;You can&amp;nbsp;create and update your ApplicationId configuration in our Developer/PreProduction&amp;nbsp;environment by accessing &lt;A href="https://config.healthvault-ppe.com/"&gt;https://config.healthvault-ppe.com&lt;/A&gt;.&amp;nbsp; The App Manager tool in our HealthVault SDK also connects to this config site.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;But t&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;his configuration site is only available in non-Production environments.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Microsoft reviews the data access for each application before it goes live, in an effort to ensure that the data set is reasonable for the implied intent of the application.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Therefore any updates to a Production configuration can only be performed by the Microsoft team.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You must make the config changes in PPE first and then test/verify that they work with your app.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Then you submit an email request to &lt;A href="mailto:HvGoLive@microsoft.com"&gt;&lt;FONT color=#0000ff&gt;HvGoLive@microsoft.com&lt;/FONT&gt;&lt;/A&gt; so that we can review the changes and then push the changes for you.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-themecolor: dark2"&gt;If you are making major changes to your configuration and want the config updates to coincide with the deployment of new code, we are generally able to schedule the push of a config update to coincide with your deployment.&amp;nbsp; We ask that you give us a few business days' notice for such a push, or a bit longer if the push will be outside of west-coast US business hours.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919839" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/app+config/default.aspx">app config</category></item><item><title>Handling HealthServiceCredentialTokenExpiredException in .NET SDK</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/11/06/handling-healthservicecredentialtokenexpiredexception-in-net-sdk.aspx</link><pubDate>Fri, 06 Nov 2009 20:15:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918779</guid><dc:creator>vaibhavb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9918779.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9918779</wfw:commentRss><description>&lt;p&gt;Applications are expected to Handle the HealthServiceCredentialTokenExpiredException. The best way to handle this error is to Redirect the user to sign-on again, the best place to implement it in your basepage’s page error handler. Here is some sample code which accomplishes the same, please note this code should be in our basepage or any page deriving from HealthServicePage :&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: gray"&gt;/// &amp;lt;summary&amp;gt;
/// &lt;/span&gt;&lt;span style="color: green"&gt;This error block handles the case of an expired user token. User
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;tokens expire after 24 hours or time set by persistent tokens
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;for the &amp;quot;keep me sign-in&amp;quot; feature. These tokens and are stored in the cookie,
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;which has no default timeout. Developers are encouraged to expire cookies 
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;sooner, but this code handles the case where the cookie does not
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &lt;/span&gt;&lt;span style="color: green"&gt;expire and the browser window is left open for over 24 hours.
&lt;/span&gt;&lt;span style="color: gray"&gt;/// &amp;lt;/summary&amp;gt;
/// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
/// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;
&lt;/span&gt;&lt;span style="color: blue"&gt;protected void &lt;/span&gt;Page_Error(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)
{
    &lt;span style="color: #2b91af"&gt;Exception &lt;/span&gt;ex = Server.GetLastError();

    &lt;span style="color: blue"&gt;if &lt;/span&gt;(ex &lt;span style="color: blue"&gt;is &lt;/span&gt;HealthServiceCredentialTokenExpiredException)
    {
        WebApplicationUtilities.RedirectToLogOn(HttpContext.Current);
    }

    ShowError(ex);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Your page will need to implement ShowError method or you comment it and re-throw the un-caught exceptions.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918779" width="1" height="1"&gt;</description></item><item><title>More About Certificate Errors</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/11/05/more-about-certificate-errors.aspx</link><pubDate>Thu, 05 Nov 2009 21:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918259</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9918259.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9918259</wfw:commentRss><description>&lt;P&gt;Here is some help on diagnosing some of the common modes of failure with HealthVault certificate management.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Access denied&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The most common cause of this error is that the application can find the certificate but the account running the app does not have the proper permissions to utilize its private key at run-time.&amp;nbsp; See the end of &lt;A href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx" mce_href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx"&gt;this article &lt;/A&gt;for more information on giving permissions manully, or use the App Manager tool in the SDK.&lt;/P&gt;
&lt;P&gt;This error can also be triggered by attempting a read/write which the user has not authorized, or a number of other authorization-related errors.&amp;nbsp; You may need to look at the stack trace in order to figure out where your error lies.&amp;nbsp; But if you have never successfully connected to HealthVault from Machine X with AppId Y, the certificate is the best place to start.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Keyset does not exist&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I have seen this in two different scenarios:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Application certificate is in the cert store, but that certificate only contains a public key.&amp;nbsp; So the app finds the cert but can't find the keyset that it wants.&lt;/LI&gt;
&lt;LI&gt;Application certificate is in the file system but the application's service account&amp;nbsp;doesn't have permission on this folder or file.&amp;nbsp; Having not run this scenario myself, I would have expected this to be another "access denied" but I learned today that it gives a "keyset does not exist" error.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/certificates/default.aspx">certificates</category></item><item><title>Certificate Errors</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/10/22/certificate-errors.aspx</link><pubDate>Fri, 23 Oct 2009 00:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911776</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9911776.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9911776</wfw:commentRss><description>&lt;P&gt;Got a good question today from a long-time HealthVault Developer -- at least they are long-time in terms of the short history of HealthVault.&lt;/P&gt;
&lt;P&gt;If your &lt;A href="http://blogs.msdn.com/healthvaultfaq/archive/2009/10/19/certificate-management.aspx" mce_href="http://blogs.msdn.com/healthvaultfaq/archive/2009/10/19/certificate-management.aspx"&gt;application certificate&lt;/A&gt; is not configured correctly, either on your app server or on the HealthVault server, the first time that you will see an error is the first time that your application tries to read or write data to/from the HealthVault platform.&amp;nbsp; This means that your end users (or more likely your test accounts) can successfully go through Application Authorization before they will see this error.&lt;/P&gt;
&lt;P&gt;The fact that you get through App AuthZ without seeing any errors may lead you to believe that your certificate must be correct, but that is not the case.&amp;nbsp; If you see an "Access Denies" error the first time that you try to load a page containing health information, then the most likely cause of your issue is an improperly configured application certificate.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;See the post linked above for more information on certificate management.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911776" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/certificates/default.aspx">certificates</category></item><item><title>HealthVault Response Paging</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/10/19/healthvault-response-paging.aspx</link><pubDate>Mon, 19 Oct 2009 22:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909530</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9909530.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9909530</wfw:commentRss><description>&lt;P&gt;There is a parameter on the HealthRecordFilter object called MaxFullItemsReturnedPerRequest and it is set to 240 by default.&amp;nbsp; If your search returns more than MaxFullItemsReturnedPerRequest items then you will get full items for the first &lt;EM&gt;max&lt;/EM&gt; items and then HealthRecordItemIds for the remaining items.&amp;nbsp; You can then retrieve the other items by ID.&lt;/P&gt;
&lt;P&gt;If you are using the .NET HealthVault SDK then all of this logic is handled for you.&amp;nbsp; The HealthRecordItemCollection returned by GetMatchingItems will appear to contain all of the items. Attempts to work with the guts of an item that is still on the server will trigger the retrieval of that information.&lt;/P&gt;
&lt;P mce_keep="true"&gt;(update on 10/21/2009: the default for MaxFullItemsReturnedPerRequest&amp;nbsp;is 240.&amp;nbsp; I originally said 30 and that is incorrect.)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909530" width="1" height="1"&gt;</description></item><item><title>Certificate Management</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/10/19/certificate-management.aspx</link><pubDate>Mon, 19 Oct 2009 22:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909507</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9909507.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9909507</wfw:commentRss><description>&lt;P&gt;We get a lot of questions about managing your HealthVault application certificate.&amp;nbsp; When your application initiates a connection to HealthVault, it uses its unique private key to encrypt the first handshake message that it sends.&amp;nbsp; HealthVault then uses a public key to verify that the sender of this message is indeed a trusted host.&amp;nbsp; This public key must be registered with HealthVault before such connections can be made.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Generating your key pair and installing your private key&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You can generate your key pair in one of two ways:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use the MakeCert.exe tool which ships with the &lt;A href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/HealthVaultSDK.exe" mce_href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/HealthVaultSDK.exe"&gt;HealthVault SDK&lt;/A&gt; and is &lt;A href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/makecert.exe" mce_href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/makecert.exe"&gt;available&lt;/A&gt; on MSDN.&amp;nbsp; This&amp;nbsp;&lt;A href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx" mce_href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx"&gt;doc&lt;/A&gt; on MSDN has more information on using MakeCert.&lt;/LI&gt;
&lt;LI&gt;Use the Application Manager tool which ships with the &lt;A href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/HealthVaultSDK.exe" mce_href="http://download.microsoft.com/download/8/9/1/891600C3-64EF-4BBC-A883-279C2365625F/HealthVaultSDK.exe"&gt;HealthVault SDK&lt;/A&gt;.&amp;nbsp; Application Manager makes it easy to create a new AppId and certificate pair at the same time.&amp;nbsp; Application Manager does not handle the scenario of creating a new certificate pair for an existing application.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Once you have generated your key pair, you can install it for use by your application in one of three ways:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Cert store, default name.&lt;/STRONG&gt;&amp;nbsp; Application Manager gives your certificate the default name, "WildcatApp-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx," and places it in the default location.&amp;nbsp; The HealthVault&amp;nbsp;&lt;A href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx" mce_href="http://msdn.microsoft.com/en-us/healthvault/bb814945.aspx"&gt;instructions&lt;/A&gt; on using MakeCert also give the cert the default name and place it in the default location.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cert store, non-default name.&lt;/STRONG&gt;&amp;nbsp; To specify your certificate name, specify the full subject name of the cert (CN=) in the &amp;lt;appSettings&amp;gt; section of your web.config file as follows:&lt;/LI&gt;&lt;/UL&gt;
&lt;P style="MARGIN: 0in 0in 0pt 1.25in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;appSettings&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-INDENT: 0.5in; MARGIN: 0in 0in 0pt 1.25in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;AppCertSubject&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;[full_cert_subject_name]&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 1.25in" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;appSettings&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;File system.&lt;/STRONG&gt;&amp;nbsp; If you&amp;nbsp;choose to take this approach then make sure that the following two things are true:&amp;nbsp;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;The IIS worker process has access to read the file&lt;/LI&gt;
&lt;LI&gt;The file is not stored in a location where it is visible on your web site.&amp;nbsp; Don't put it inside your web application path but in a secure file path not visible in IIS.&lt;/LI&gt;
&lt;LI&gt;To store your certificate on the local file system, you must add an additional entry in your web.config to tell the HealthVault SDK code where to look for the certificate, as follows.&amp;nbsp; (This is also added to the &amp;lt;appSettings&amp;gt; section.)&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 1.25in; mso-list: l0 level2 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #c00000; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;add&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 10pt"&gt;key&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt"&gt;"&lt;SPAN style="COLOR: blue"&gt;ApplicationCertificateFileName&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;C:\someFolderName\cert\HelloWorld-SDK_ID-05a059c9-c309-46af-9b86-b06d42510550.pfx&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; COLOR: #c00000; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;Note: the file path is an absolute local file path; relative path names are not allowed&lt;/LI&gt;
&lt;LI&gt;If you configured your private key to require a password for use, then you can/must specify this password in your web.config by using the&amp;nbsp;&lt;STRONG&gt;ApplicationCertificatePassword&lt;/STRONG&gt; parameter&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Registering&amp;nbsp;your Public Key&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In PPE, you can register your public key in one of two ways:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use the Application Manager tool in the .NET HealthVault SDK to upload a new ApplicationId and its certificate.&amp;nbsp; Note that this workflow is only for creating new applications.&amp;nbsp; You cannot add a new certificate to an existing application this way.&lt;/LI&gt;
&lt;LI&gt;Login to the Application Configuration Center at &lt;A href="https://config.healthvault-ppe.com/"&gt;https://config.healthvault-ppe.com&lt;/A&gt;&amp;nbsp;and click on the "Public Certs" tab.&amp;nbsp; You can upload additional CER files here.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Note that each application in the HealthVault-PPE environment has exactly one HealthVault-PPE account that has been set up with config access.&amp;nbsp; If you need to set up a new account with config access, you can request this access via a link on the App Config Center home page.&lt;/P&gt;
&lt;P&gt;In Production, the only way to register your public key is to go through the HealthVault &lt;A href="http://msdn.microsoft.com/en-us/healthvault/bb962148.aspx" mce_href="http://msdn.microsoft.com/en-us/healthvault/bb962148.aspx"&gt;Go-Live process&lt;/A&gt;.&amp;nbsp; If your application is already live and you need to update or replace its public key, you can file a request with HealthVault Developer Support &lt;A href="http://support.microsoft.com/oas/default.aspx?prid=13277&amp;amp;ln=en-us" mce_href="http://support.microsoft.com/oas/default.aspx?prid=13277&amp;amp;ln=en-us"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909507" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/certificates/default.aspx">certificates</category></item><item><title>Email Addresses</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/10/16/email-addresses.aspx</link><pubDate>Fri, 16 Oct 2009 23:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9908427</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9908427.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9908427</wfw:commentRss><description>&lt;P&gt;We've had a few forum questions lately on email addresses so I figured I would send out some clarifying info.&lt;/P&gt;
&lt;P&gt;Most of you are aware that the Account and the Record are separate but related entities in HealthVault.&amp;nbsp; Each user account can have varying degrees of access to one or many records.&amp;nbsp; So when you start thinking "email" you have to wonder whether you want to email the account-holder or the record-holder.&amp;nbsp; The account-holder's email can be retrieved by an application by calling PersonInfo.GetSelfRecord() and then looking for the PersonalContactInfo singleton object.&amp;nbsp; The record-holder's email is in the record at PersonInfo.SelectedRecord.&lt;/P&gt;
&lt;P&gt;You login to an account with a credential that is usually a LiveId but the email address / login name for this LiveId is not stored in HealthVault nor is it directly available via the HealthVault API.&amp;nbsp; This LiveId email address is often the same as the account-holder email in HealthVault but there is no guarantee that this will be the case.&lt;/P&gt;
&lt;P&gt;When a user creates a record in the HealthVault UI, they must specify an email address.&amp;nbsp; If they just signed up for an account and this record is their Self record then the email address that they used at account sign-up may get copied into the input form but the user can change this.&amp;nbsp; After record creation, a user can change any record email address to which they have access by using the "Edit Profile" link in the HealthVault shell.&lt;/P&gt;
&lt;P&gt;Once you have that email address, you can use your own server to send email or you can use the HealthVault API to do so.&amp;nbsp; If you elect to use the HealthVault&amp;nbsp;API, note that you will need to make two config changes first, via &lt;A href="https://config.healthvault-ppe.com/"&gt;https://config.healthvault-ppe.com&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Add the&amp;nbsp;&lt;STRONG&gt;Send Email&lt;/STRONG&gt; method group on the&amp;nbsp;&lt;STRONG&gt;Method Mask&lt;/STRONG&gt; tab&lt;/LI&gt;
&lt;LI&gt;Specify the &lt;STRONG&gt;Email Domain&lt;/STRONG&gt; from which your application's emails will originate.&amp;nbsp; You will set the sender address when calling our email-sending methods and the HealthVault platform will check that this sender address matches the domain on file.&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;HealthVault provides&amp;nbsp;a way for applications to email their end users without requiring access to PersonalContactInfo.&amp;nbsp; This is a privacy feature.&amp;nbsp; Regardless of whether this approach is used, an applications Terms of Use must make it clear to end users that the application may send them email.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.health.applicationconnection.sendinsecuremessagefromapplication.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.health.applicationconnection.sendinsecuremessagefromapplication.aspx"&gt;SendInsecureMessageFromApplication &lt;/A&gt;has two signatures:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The &lt;A href="http://msdn.microsoft.com/en-us/library/dd724623.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd724623.aspx"&gt;first signature&lt;/A&gt; lets you specify a list of recipients by (DisplayName, EmailAddress). You can use this in the case where you know the recipient email addresses via any of the data types mentioned above.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The &lt;A href="http://msdn.microsoft.com/en-us/library/dd724624.aspx" mce_href="http://msdn.microsoft.com/en-us/library/dd724624.aspx"&gt;second signature&lt;/A&gt; lets you specify a list of recipients by PersonId.&amp;nbsp; You can use this in the case where you don't know the account-holder's email address but you still want to contact them.&amp;nbsp; This protects the user's privacy by never sharing their address.&amp;nbsp; This function leverages the email address in the PersonalContactInfo field of the first Self record of the user.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.health.applicationconnection.sendinsecuremessagetocustodiansfromapplication.aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.health.applicationconnection.sendinsecuremessagetocustodiansfromapplication.aspx"&gt;SendInsecureMessageToCustodiansFromApplication&lt;/A&gt; takes a RecordId as a parameter.&amp;nbsp; This method will send your note to every custodian of the record in question.&lt;/P&gt;
&lt;P&gt;Note that all of these methods are called "SendInsecureMessage..." because email is not a secure protocol and you should not send health information through email.&amp;nbsp; (Consult a lawyer if this is unclear.)&lt;/P&gt;
&lt;P&gt;Questions on any of this?&amp;nbsp; Please ask on the &lt;A href="http://social.msdn.microsoft.com/forums/en-US/healthvault/threads/" mce_href="http://social.msdn.microsoft.com/forums/en-US/healthvault/threads/"&gt;forum&lt;/A&gt; in order to get the quickest possible response.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9908427" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/email/default.aspx">email</category></item><item><title>Deleting a Record</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/10/05/deleting-a-record.aspx</link><pubDate>Tue, 06 Oct 2009 00:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9903427</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9903427.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9903427</wfw:commentRss><description>&lt;P&gt;It is possible for end users to delete a HealthVault record but this function is not featured prominently in the user interface.&amp;nbsp; This is by design, as we don't want end users to accidentally delete a record.&lt;/P&gt;
&lt;P&gt;In order to delete a record:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Go to the HealthVault Shell: &lt;A href="https://account.healthvault.com/"&gt;https://account.healthvault.com&lt;/A&gt;&amp;nbsp;in the Consumer environment or &lt;A href="https://account.healthvault-ppe.com/"&gt;https://account.healthvault-ppe.com&lt;/A&gt; in the Developer environment&lt;/LI&gt;
&lt;LI&gt;Use the left sidebar menu to "switch to" the record that you wish to delete&lt;/LI&gt;
&lt;LI&gt;Click the "Edit Profile" link under the record picture/folder icon near the upper left corner of the screen&lt;/LI&gt;
&lt;LI&gt;Below the [save] and [cancel] buttons, you will see this text: &lt;BR&gt;"If you wish, you can &lt;U&gt;delete this health record&lt;/U&gt;. &lt;B&gt;Warning&lt;/B&gt;: This will delete all the information in the record. &lt;A title="This link opens HealthVault Help in a new window or tab" href="https://account.healthvault.com/help.aspx?topicid=HelpDirectory#Delete_record" target=_blank&gt;Learn more&lt;/A&gt;."&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I didn't make the text above a hyperlink but it takes you to the DeleteRecord page in the Shell.&lt;/P&gt;
&lt;P&gt;If an end user erroneously deletes a record, it is often possible to recover the deleted data by contacting &lt;A href="http://support.microsoft.com/healthvault" mce_href="http://support.microsoft.com/healthvault"&gt;HealthVault customer support&lt;/A&gt;.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9903427" width="1" height="1"&gt;</description></item><item><title>More about data type versioning</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/09/21/more-about-data-type-versioning.aspx</link><pubDate>Tue, 22 Sep 2009 01:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897786</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9897786.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9897786</wfw:commentRss><description>&lt;P&gt;This is a supplement to Eric's blog post on&amp;nbsp;&lt;A href="http://blogs.msdn.com/ericgu/archive/2008/10/13/versioning-in-healthvault.aspx" mce_href="http://blogs.msdn.com/ericgu/archive/2008/10/13/versioning-in-healthvault.aspx"&gt;Data Type Versioning&lt;/A&gt;&amp;nbsp;in HealthVault.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The HealthVault platform is capable of converting V2 items into the V1 schema and vice versa.&amp;nbsp; In order to simplify things for app developers, the platform will convert all versions of a type into versions that it believes this app understands.&amp;nbsp; It makes this assessment by looking at the base authz that has been configured for the app.&amp;nbsp; If the app asks the user to authorize V1 then the platform will convert all instances to V1.&amp;nbsp; Replace "V1" with "V2" or "both versions" in that previous sentence at it remains true.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Note that what the app asks for in its auth rules may sometimes differ from what the user has granted, especially in the case where you have changed your auth rules from including Type-V1 to Type-V2.&amp;nbsp; If a user has already authorized Type-V1 and you change your auth rules to use Type-V2 then the platform will recognize that your app now uses Type-V2 and the user will not be prompted to re-authorize.&lt;/P&gt;
&lt;P&gt;So if you change your code to deal with V2 instead of V1 but don't change your authorization rules then the platform will continue converting the elements into V1s.&amp;nbsp; A typecast error will occur when you try to load these V1 instances into a V2 object.&lt;/P&gt;
&lt;P&gt;The platform treats different versions of a single type a bit differently than it treats different types.&amp;nbsp; When you query the platform for instances of a versioned type, the platform's default behavior is to&amp;nbsp;treat this as a request for all versions of the type and to ignore the fact that your request implicitly specified a version.&amp;nbsp; You can override this behavior by using the&amp;nbsp;TypeVersionFormat property of the View property of your HealthRecordFilter when you search, i.e.&lt;/P&gt;
&lt;P&gt;filter.View.TypeVersionFormat.Add(Encounter.TypeId);&lt;/P&gt;
&lt;P&gt;If you are searching across multiple types then this TypeVersionFormat collection can contain multiple elements, each of which will only be applied when relevant.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So if you are moving from an older version to a newer version of one or more data types then you have two options to choose from:&lt;/P&gt;
&lt;P&gt;1. Change your authorization rules such that the new versions are requested.&amp;nbsp; The platform will see this at run-time and will therefore convert instances into the version that you want.&lt;/P&gt;
&lt;P&gt;-OR-&lt;/P&gt;
&lt;P&gt;2. Add one or more types to your HealthRecordFilter.View.TypeVersionFormat collection.&lt;/P&gt;
&lt;P&gt;If you fail to do either of these options then you will get a typecast error at run time.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897786" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/Data/default.aspx">Data</category><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/authorization/default.aspx">authorization</category></item><item><title>App authorization -- "what the app asks for" vs "what the user authorized"</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/09/21/app-authorization-what-the-app-asks-for-vs-what-the-user-authorized.aspx</link><pubDate>Tue, 22 Sep 2009 01:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897763</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9897763.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9897763</wfw:commentRss><description>&lt;P&gt;There are two different elements that you are likely to think about when you think "authorization:"&lt;BR&gt;&amp;nbsp; * the amount of access that your app requests -- required and optional&amp;nbsp;auth rules&lt;BR&gt;&amp;nbsp; * the amount of access that any particular user has granted&lt;/P&gt;
&lt;P&gt;Think of the first as a domain table, perhaps, and the latter as a collection of values or instances.&lt;/P&gt;
&lt;P&gt;The authorization state that&amp;nbsp;the HealthVault platform&amp;nbsp;references at run-time is a set of access that has been approved for a particular application by a particular user on a particular record.&amp;nbsp; With optional auth, different amounts of access can get approved for different (application, user, record) triples.&amp;nbsp; This bundle of access is stored in the HealthVault authorization system along with the (app, user, record) triple.&lt;/P&gt;
&lt;P&gt;The bundle of data access gets presented to the user during app auth is a function of what is configured in the online and offline auth rules in ACC.&amp;nbsp; Changing what is configured in ACC does not change what users have already authorized.&amp;nbsp; But if a user logs into a HealthVault-connected app and the platform sees that their currently-granted access doesn't match the required minimum that was configured in ACC, then the user is prompted to re-auth.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897763" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/authorization/default.aspx">authorization</category></item><item><title>Optional Auth Rules -- showing, hiding, checking, unchecking</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/09/15/optional-auth-rules-showing-hiding-checking-unchecking.aspx</link><pubDate>Wed, 16 Sep 2009 00:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895583</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9895583.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9895583</wfw:commentRss><description>&lt;P&gt;When a you add an optional auth rule to your application, by default it will not be shown to users in App Auth.&amp;nbsp; There is a parameter to the &lt;A href="http://msdn.microsoft.com/en-us/healthvault/cc265056.aspx" mce_href="http://msdn.microsoft.com/en-us/healthvault/cc265056.aspx"&gt;Shell Redirect&lt;/A&gt; call which lets you specify one or more rules to be displayed – &lt;STRONG&gt;onopt#&lt;/STRONG&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;On the back end, the application configuration also supports setting this default show/hide behavior, or the checked/unchecked state of the&amp;nbsp;checkbox next to your optional rule.&amp;nbsp; We have not yet added this feature to the &lt;A href="https://config.healthvault-ppe.com/" mce_href="https://config.healthvault-ppe.com"&gt;Application Configuration Center&lt;/A&gt;, so if you would like to set this parameter then you must contact the HealthVault team.&amp;nbsp; Please send us the following:&lt;/P&gt;
&lt;P&gt;ApplicationId&lt;BR&gt;Rule Name(s)&lt;BR&gt;preferred show/hide behavior for each rule&lt;BR&gt;preferred check/uncheck behavior for each rule&lt;/P&gt;
&lt;P&gt;If you aren't already working with the HealthVault team then you can reach us via either of the support options listed at &lt;A href="http://msdn.microsoft.com/en-us/healthvault/bb870258.aspx"&gt;http://msdn.microsoft.com/en-us/healthvault/bb870258.aspx&lt;/A&gt;. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895583" width="1" height="1"&gt;</description></item><item><title>What access do I have?</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/09/03/what-access-do-i-have.aspx</link><pubDate>Thu, 03 Sep 2009 23:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9891070</guid><dc:creator>Tremonte</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9891070.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9891070</wfw:commentRss><description>&lt;P&gt;If you are using Optional Access in your HealthVault authorization rules, then at times you may want to know whether a particular user has authorized an optional piece of the data type access.&amp;nbsp; You can find out what actions are currently authorized for a {user, record, app} by calling PersonInfo.SelectedRecord.QueryPermissions.&amp;nbsp; You can read more about this method at &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.health.healthrecordinfo.querypermissions.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.health.healthrecordinfo.querypermissions.aspx&lt;/A&gt;.&amp;nbsp; You can also use a similar method, QueryPermissionsByType, &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.health.healthrecordaccessor.querypermissionsbytypes.aspx"&gt;http://msdn.microsoft.com/en-us/library/microsoft.health.healthrecordaccessor.querypermissionsbytypes.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;HealthVault does *not* allow an application to ask what access a particular user has to a particular record, but it can ask what that user has authorized for use in this application.&lt;/P&gt;
&lt;P&gt;I hope that clears things up a little.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9891070" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/authorization/default.aspx">authorization</category></item><item><title>Recognizing that a file is a CCD</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/06/22/recognizing-that-a-file-is-a-ccd.aspx</link><pubDate>Tue, 23 Jun 2009 00:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9798385</guid><dc:creator>Tremonte</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9798385.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9798385</wfw:commentRss><description>&lt;P&gt;If an end user uses the "Upload a file" workflow in the HealthVault shell (&lt;A href="https://account.healthvault.com/viewitems.aspx?typeid=bd0403c5-4ae2-4b0e-a8db-1888678e4528&amp;amp;additem=True"&gt;https://account.healthvault.com/viewitems.aspx?typeid=bd0403c5-4ae2-4b0e-a8db-1888678e4528&amp;amp;additem=True&lt;/A&gt;) to upload a CCR or CCD file, the HealthVault shell recognizes that the file is a CCR or CCD and stores a CCR or CCD item to the record instead of storing a File item.&lt;/P&gt;
&lt;P&gt;This logic is part of the Shell and gets exercised at the application layer.&amp;nbsp; So if you write your own application which writes new File&amp;nbsp;items to a&amp;nbsp;HealthVault record, this logic will not get applied to your uploads.&amp;nbsp; CCR or CCD files that you write with the File typeId will get stored as Files.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In a nutshell: the Shell can recognize that what the user thought was a File should really be stored as a CCR/CCD. The platform does not perform this check before storing a File item.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9798385" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/Data/default.aspx">Data</category></item><item><title>Identifying data type versions</title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/04/10/identifying-data-type-versions.aspx</link><pubDate>Sat, 11 Apr 2009 02:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9544300</guid><dc:creator>Tremonte</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9544300.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9544300</wfw:commentRss><description>&lt;P&gt;Some of our developers have asked how to identify the most recent version of a HealthVault data type that has been revised.&amp;nbsp;We are working to improved our naming conventions and documentation in this space, but until then here is a workaround:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Go to the HealthVault Data Type Schema Browser at &lt;A href="http://developer.healthvault.com/types/types.aspx" mce_href="http://developer.healthvault.com/types/types.aspx"&gt;http://developer.healthvault.com/types/types.aspx&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Click on each version of your data type&lt;/LI&gt;
&lt;LI&gt;Look in the "transforms" list for an "upconversion" transform and/or a "downconversion" transform.&amp;nbsp; The former means that newer versions must exist and the latter means that older versions must exist.&amp;nbsp; So look for the type which has only a "downconversion" transform and you'll have found the newest version.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Here is a list of the data types that have been revised as of today:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Family History:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;6d39f894-f7ac-4fce-ac78-b22693bf96e6 is the first version and is listed first&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;22826e13-41e1-4ba3-8447-37dadd208fd8&lt;/STRONG&gt; is the second version and is listed second&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Immunization:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;cd3587b5-b6e1-4565-ab3b-1c3ad45eb04f&lt;/STRONG&gt; is the second version but is listed first&lt;/LI&gt;
&lt;LI&gt;3d817dbe-af42-4a9d-a553-d1298b4d08fc is the first version but is listed second&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Medication:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;30cafccc-047d-4288-94ef-643571f7919d&lt;/STRONG&gt; is the second version but is listed first&lt;/LI&gt;
&lt;LI&gt;5c5f1223-f63c-4464-870c-3e36ba471def is the first version but is listed second&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Procedure:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;0a5f9a43-dc88-4e9f-890f-1f9159b76e7b is the first version and is listed first&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;df4db479-a1ba-42a2-8714-2b083b88150f&lt;/STRONG&gt; is the second version and is listed second&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Encounter:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;3d4bdf01-1b3e-4afc-b41c-bd3e641a6da7 is the first version and is listed first&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;464083cc-13de-4f3e-a189-da8e47d5651b&lt;/STRONG&gt;&amp;nbsp;is the second version and is listed second&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;When trying to configure your Application Configuration Center, you will not be able to see these GUIDs but the HealthVault platform returns the data type list in the same order each time so you can use the reference chart above to make sure that you are requesting access to the right data types.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Update (20 Aug 2009): &lt;/STRONG&gt;The Application Configuration Center now displays a version number for any version of a data type that isn't the newest version.&amp;nbsp; No version number is displayed for the newest version, and old versions are indented and listed below the newest version, for example:&lt;/P&gt;
&lt;P mce_keep="true"&gt;[&amp;nbsp; ] Medication&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&amp;nbsp; ] Medication (v1)&lt;/P&gt;
&lt;P mce_keep="true"&gt;The first Medication is the most recent version, which in this case is v2.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9544300" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/Data/default.aspx">Data</category></item><item><title>HealthVault platform exception: “The specified transform was not found.”  </title><link>http://blogs.msdn.com/healthvaultfaq/archive/2009/02/17/healthvault-platform-exception-the-specified-transform-was-not-found.aspx</link><pubDate>Wed, 18 Feb 2009 03:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9429231</guid><dc:creator>Tremonte</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/healthvaultfaq/comments/9429231.aspx</comments><wfw:commentRss>http://blogs.msdn.com/healthvaultfaq/commentrss.aspx?PostID=9429231</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;If you see HealthVault platform throw the above exception when you run HealthRecordSearcher.GetMatchingItems() with specified type ID, the likely cause is that the locale of the application server is set to a value that doesn’t match the locale of the XSLT transform in HealthVault platform. The platform then fails to retrieve the XSLT transform with the application server’s locale. To work around this, we can add an element in Web.Config to specify the locale. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&amp;lt;configuration&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;globalization uiCulture=”en-US” culture=”en-US” /&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&amp;lt;/configuration&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.5in" class=MsoListParagraph&gt;&lt;FONT size=3 face=Calibri&gt;When&amp;nbsp;debugging issues like this, the request-response tracing described at&amp;nbsp;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; COLOR: #1f497d; FONT-SIZE: 11pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/healthvault/cc135993.aspx"&gt;&lt;FONT color=#0000ff&gt;http://msdn.microsoft.com/en-us/healthvault/cc135993.aspx&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;FONT color=#000000 size=3&gt;should be quite helpful&lt;/FONT&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9429231" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/locale/default.aspx">locale</category><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/transform/default.aspx">transform</category><category domain="http://blogs.msdn.com/healthvaultfaq/archive/tags/debugging/default.aspx">debugging</category></item></channel></rss>