You are here

Feed aggregator

Jobs in technology in the US, good news and the bad news

MSDN Blogs - Fri, 05/02/2014 - 08:18
Not a technical blog about how to organize ones and zeros.  But it is a an important blog about the state of affairs in the US.  According to another blog: ” http://blogs.technet.com/b/inside_microsoft_research/archive/2014/04/24/hacking-women-helping-women.aspx Rane Johnson-Stempson used an older document from the Bureau of Labor Statistics, and her source appears to be this article: http://tinyurl.com/kcyynqf (it’s a PDF file) and it states: By 2018, predicts the U.S. Bureau of Labor...(read more)

Check Out the May Issue of MSDN Magazine

MSDN Blogs - Fri, 05/02/2014 - 08:04

Be sure to check out the May issue of MSDN Magazine, which spotlights some of the powerful new capabilities highlighted at the Microsoft Build Conference last month. Our lead feature, by Mark Michaelis, explores the new features and capabilities coming in the next version of the C# programming language (C# vNext, expected to be called C# 6.0 upon release).

As Michaelis points out in his feature, C# 6.0 won’t be a revolutionary change, but it will help eliminate a host of coding annoyances and inefficiencies that can bog down your programming efforts. He goes on to single out a few of his favorite features in C# 6.0, including the $ operator (string index members), primary constructors (without field parameters), using static, and declaration expressions. Definitely give this articles a read.

Also highlighted at the Build Conference was the new Microsoft Application Insights facility in Visual Studio 2013 and Visual Studio Online. Application Insights is a set of services that provide actionable insight into a production application and integrates that data back into the development tools and process. The tool is great for understanding application health and responsiveness, feature effectiveness, and usage patterns. Charles Sterling’s feature Next-Generation Development with Application Insights dives into this new facility, which was unveiled at the Visual Studio 2013 launch late last year.

Also notable in the May issue is Stephen Cleary’s closing installment in his excellent series on combining the async and await keywords with the tried-and-true MVVM pattern. This month Cleary explores the services layer and addresses asynchronous services. I also encourage you to check out the other two features in the series—the April issue feature on asyc implementation of ICommand, and the March feature on data binding to an asynchronous operation.

Rounding out the May issue are two more features. Bill Heys and the ALM Rangers team offer a look at feature toggles as an alternative to branching for parallel, concurrent feature development. Also known as feature flags or feature switches, feature toggles lets you check new features in to the main branch so they can be continuously integrated and tested at build time. Finally, Brannon King’s “Dangers of Violating SOLID Principles in C#” looks at the time-worn principles of SOLID-- Single responsibility, Open for extension and closed for modification, Liskov substitution, Interface segregation, and Dependency injection—from a whole new angle.

Don’t miss out on our May issue columns, either. Charles Petzold leads the charge this issue, with his DirectX column exploring how to make 2D graphical objects seem to acquire depth and body and float in 3D space. Petzold has been chipping away at Direct2D and now Direct3D in recent months, introducing the powerful DirectX graphics subsystem to developers who might otherwise hesitate to wade into the deep water. Don’t miss it!

Removing a TFS Work Item permanently

MSDN Blogs - Fri, 05/02/2014 - 07:38
This came up with a customer of mine and since it gets asked so often, I thought of posting a blog post on how to do it. CAVEATS: First of all you should considering adding a state of “Removed” to the WIT. Once you do that you can change the state of the PBIs to Removed (or something similar). The PBI is then still in the system (you can query on them), but they don’t show up on the backlog anymore. Often times you should never be doing this permanent “DELETE” as WITs that get created should remain...(read more)

Stand-up (Part 5): Using git source control in Monaco

MSDN Blogs - Fri, 05/02/2014 - 07:16

This is the fifth blog post in our series around developing a node.js application using Monaco. In this part we take a look at the Git tooling support Monaco provides. We assume that you are familiar with the basic concepts of Git. If not, there is a lot of useful documentation and tutorials around Git available on other sites, like here or here.

In the previous chapters of this series you have learned all the basic steps to setup a node.js project using Monaco. There is a lot more to explain around Monaco and how to use it for the best development experience. You can check out our Channel9 videos on further topics like Editor Tips and Tricks and Navigating the environment if you are interested.

If you are interested in previous parts of this series, please use the links below:

  1. Part 1: Introduction
  2. Part 2: How to configure the workspace for IntelliSense
  3. Part 3: Using Mocha for server side unit testing
  4. Part 4: How to debug node.js applications on Azure
  5. Part 5: How to connect to an existing workspace using source control
  6. Part 6: Best practices leveraging development and production sites
Pushing an existing workspace to a new repository

There are two typical scenarios where you want to use source control for your changes: On the one hand you might have existing source code that you want to push into a new Git repository and on the other hand you might have an existing repository with code that you want to pull into Monaco. If you have followed this series all the way from Part 1, your workspace will be filled with some files already. In this paragraph you will learn how to push these changes to a Git repository.

Monaco provides Git integration both from the console (Ctrl+Shift+C) through the Git command as well as the Git view (Ctrl+Shift+G). If you open this view, you can easily initialize an empty repository, clone from an existing one or connect to a Visual Studio Online repository.

In our case, we want to initialize a Git repository with all the files of our workspace. After you have clicked on the "Initialize git repository" button in the Git view, you can create your initial commit. Simply type a commit message into the input box on the top of the Git view and hit Enter. You can also use the console (Ctrl+Shift+C) for this purpose. All Git commands are available to you from there by providing the native Git command.

Since this is the first time we are using Git, Monaco will now ask you to provide some additional information about you. 

You name and e-mail will be used for Git to relate the changes you do to your identity. When someone else pulls your changes, these changes will show up with your name and e-mail. Type in your identity by uncommenting the related lines in the configuration file:

Close this editor with Ctrl+S to save it and enter your commit message again followed by Enter. This saves the git configuration file outside of wwwroot, but still inside the website. As a consequence you will have to enter the identity info again when setting up git for another web site. This is something we plan to improve in the future.

Now that we have our first commit created, we need to let Monaco know where to push it. Monaco works with any Git repository, so it is your choice where you want to push your changes to. You can create a project with Git repository for free at CodePlex or GitHub

Open the Monaco console (Ctrl+Shift+C) and type the following commands to add your Git repository as a remote and push your changes:

git remote add origin <Git Repository URL> git push origin master

 In case your repository is protected with credentials, Monaco will ask for them and also provide an option to remember the credentials for further use. We are currently not storing the credentials across multiple web sites, so you might see the same dialog showing up from another web site.

Pulling a workspace from an existing repository 

In this scenario we assume that you start with a fresh web site without local changes. The standup application is hosted in a Git repository at CodePlex but any git URL will work. If your git repository is hosted in VSOnline, then you can connect to VSOnline and pick from the list of repositories without having to look up the Git URL.

We can quickly pull the sources into Monaco using Git. From the Git view (Ctrl+Shift+G) type https://git01.codeplex.com/monacostandup into the repository URL field and press “Clone from a git URL”. You will see the console running the clone operation and the explorer filling with the contents of the repository. In case your repository is protected by credentials, Monaco will ask you to type username and password.

Now that the entire standup application source code is pulled into your workspace you can actually run the application from your web site. Just use the run action from the left hand side or press Ctrl+F5 and see it live!

A tour around Monaco Git tooling features

Once the clone operation has finished you will notice some more controls showing up in the navigation bar to the top. These controls provide you with an up to date indication of your current git status. This includes an indication of

  • the branch you are working on
  • changes to the working tree ("dirty changes") and index 
  • incoming and outgoing changes

The first dropdown gives you an indication of the branch you are working on. It will also indicate if you have dirty changes on the working tree or the index by adding a '*' and '+' decoration after the branch name. In case you are in a state where you have to merge changes, an exclamation mark is added to indicate this state. From the dropdown you can create new branches and quickly switch between branches.

The second dropdown provides you with a synchronize action that will pull incoming changes and push your commits to the repository. It will also give you an indication of incoming changes from the server and outgoing commits you have not yet pushed.

Monaco will periodically check for incoming changes in the background. You don't have to configure anything to be informed when new changes are ready to be pulled into the workspace. You will see the same indicator from the Monaco console. Any git operation will update the console prompt directly so that you are always informed about the state of your repository.

Monaco makes it easy to track changes and work with them. In the next paragraph we will take a tour on making a change and committing it to the repository. 

Tracking changes with Monaco

Now that our workspace is under control of Git, changes you make to files are tracked and reported. You will be able to distinguish added, changed and deleted files from the Git view (Ctrl+Shift+G). In the example below you see app.js was modified, newfile.txt added and the routes folder deleted:

You will also notice a little decoration on top of the Git icon on the left hand side of the workbench. This decoration indicates the number of changes that have not yet been committed. In our example, four changes are waiting to be committed.

Let's make some simple modifications to a file in the workspace to get a feeling for change indication in Monaco. In the screenshot below you can see changes to the app.js file. Since the original revision of the file is known to Monaco through Git, the editor can indicate additions, changes or deletions to lines in the file. This makes it easy to track changes in individual files:

Before committing changes back to the repository you typically want to review all changes. Each entry in the git view can be clicked to review the changes that were made. Click on the file you changed to bring up Monaco's diff editor. This editor will give you an indication of lines changed from the revision that was pulled from the Git repository. The change indication goes down to the word level making it easy for you to track smaller changes to individual lines.

The right hand side of the diff editor is a fully editable editor. You can continue to make changes here as needed.

Once all changes have been reviewed, you can type in a commit message into the Git view and press Enter to create the commit. You will notice that the change indicator in the navigation bar to the top now shows you the number of outgoing commits. Just click on the "synchronize" action to push your changes back to the repository. 

Conclusion

In this part you learned how to leverage the git tooling of Monaco to connect your workspace to a repository and share changes to your team. Monaco provides convenient git tooling from the Git view (Ctrl+Shift+G). Whenever you feel that this view does not provide enough git functionality, you can always run the git command from the Monaco console (Ctrl+Shift+C) and have the full git experience at your fingertips.

In the next and last part of this series we will distinguish production web sites from development web sites. You will see the full picture of how the standup application is developed and how we ensure that changes are first tested in development before pushing them to our production site.

If a lot of settings are ignored when set in a DLL, why bother even letting you set them on a DLL?

MSDN Blogs - Fri, 05/02/2014 - 07:00

There are many settings that are ignored when set in a DLL. /LARGE­ADDRESS­AWARE. Size­Of­Stack­Reserve and Size­Of­Stack­Commit. There are plenty of others. Commenter 640k asks why these settings even exist for DLLs if they has no effect.

Because they are settings for PE modules in general.

If there were separate file formats for EXEs and DLLs, then there would have to be two different module loaders, one for EXEs and one for DLLs. This creates extra work for no particular benefit aside from satisfying some anal-retentive compulsion that nothing be wasted. As far as I can tell, all operating systems use a common file format for both executables and libraries.

If it really bothers you, you can consider this flags as Reserved for future use when applied to DLLs.

MSDN Magazine article on Application Insights

MSDN Blogs - Fri, 05/02/2014 - 06:53

Chuck Sterling did a nice article on using Application Insights in the latest MSDN Magazine issue:

http://msdn.microsoft.com/en-us/magazine/dn683794.aspx

Brian

Connector for Microsoft Dynamics now supports Microsoft SQL Server 2014 and Microsoft Dynamics AX 2012 R3

MSDN Blogs - Fri, 05/02/2014 - 05:54

Connector for Microsoft Dynamics V3 CU2 has been re-released and now supports Microsoft SQL Server 2014. 

If you are planning to install the MSDI database for Connector for Microsoft Dynamics on an instance of Microsoft SQL Server 2014, then you will need to use this refreshed version of CU 2 (3.2.816.1).

Connector for Microsoft Dynamics also supports the recently released Microsoft Dynamics AX 2012 R3 ERP.  This refresh is only required if you are integrating Microsoft Dynamics CRM and Microsoft Dynamics AX 2012 R3 and you are installing the MSDI database on an instance of Microsoft SQL Server 2014.  If you are using another supported version of Microsoft SQL Server, this refresh is not required.

Receive, Disassemble Acknowledge an HL7 Message in BizTalk

MSDN Blogs - Fri, 05/02/2014 - 05:06

How difficult is it to validate and disassemble a flat file in BizTalk? Not much! I’d say, provided you have the ight document schema(s) and know how a flat file disassembler in the receive pipeline works. Now is that any more difficult when it comes to a HL7 flat file? The answer is “No” and “Yes”. “No”, being the basic concepts remain largely the same and “Yes” because there are a few additional components you have to acclimatize yourself with. If you have had some acquaintance with EDI processing, this should be nothing short of a cake walk.

So, here’s my scenario. BizTalk receives a HL7 flat file message thru MLLP adapter. The BTAHL7Receive pipeline validates and disassembles the incoming message to an XML file and sends an ACK / NACK back to the source system. Now the notable difference this makes with a flat file disassembling is that “the disassembled message breaks into 3 parts or segments – A MSH Segment, body and a Z-Segment”. In this demo, we are only interested in the body part of the disassembled message. If you like to know how these segments could be processed, I’d suggest the HL7 End to end sample in MSDN at http://msdn.microsoft.com/en-us/library/bb981217(v=bts.10).aspx

Development

While processing a HL7 message it’s quite important to realize the Header segment (MSH), Version and the Message type (9th composite in the MSH Segment).

In my sample, I am going to deal with an ADT^A03 type message wherein ADT – Admit Discharge Transfer and A03 is the action type. There are numerous other message types; MFN (Master File Notification), ORU(Observation Result
Unsolicited) to name a few. I wouldn’t quite attempt a deep delve into the HL7 standard segments here, but if you like to explore more on that area, I’d suggest http://www.interfaceware.com/hl7-standard/

I am expecting a 2.3.1 version message and my party name happens to be Tutorial_ADTSystem. You will find out how the party is relevant towards the later part of this exercise.

SAMPLE FILE

MSH|^~\&|Tutorial_ADTSystem|MCM|BTAHL7InterfaceEngine||199601121005||ADT^A03|000001|P|2.3.1
EVN|A03|199601121005||01||199601121000
PID|||191919^^^MYHOS^MR~123-45-6789^^^USSSA^SS|253763|SMITH^JOHN^Q||19560129|M|||123MAIN^^BUFFALO^NY^98052^""||(123)555-
0100||S|M|10199925^^^MYHOS^AN|123-45-6789
PD1|S|F|NormalString^A^+1^-
^ISO^simpletext&Test&HCD^GI^simpletext&NormalString&ISO^I|NormalString^Test&Test^Test^Test^Test^Test^AE^simpletext^simpletext&Test&
ISO^P^NormalString^M10^MC^simpletext&NormalString&HCD^A|N|simpletext|I|I|N|NormalString^+1^M11^simpletext&NormalString&L,M,N^RRI^s
impletext&NormalString&HCD|NOVALUE^NormalString^Test^Test^NormalString^Test|N
PV1|1|I|2000^2012^01^hey&test&DNS^test^test^test^test^test||||004777^MILLER^CONNIE^A.|||SUR||||2|A0


VISUAL STUDIO

1. I’ll start a new solution with 3 projects.

    a. BTAHL7V2XCommon Project
    Contains ACK schemas ACK_24_GLO_DEF.xsd, ACK_25_GLO_DEF.xsd and MSH_25_GLO_DEF.xsd

    b. BTAHL7V231Common Project
    Contains datatypes_231.xsd, segments_231.xsd and tablevalues_231.xsd. These schemas define the segments in your standard ADT^A03 schema in the coming project.

    c. Empty BTAHL7 Project

  • Contains the ADT^A03 schema. You should use HL7 schema selector utility to get this schema.
  • Add New Item > BTAHL7 Schemas > HL7 Schema Selector. Choose the values as below

         

Build the first two projects (BTAHL7V2XCommon Project and BTAHL7V231Common Project) and create a reference in the BTAHL7 Project. This is important because the datatypes, segments and tablevalues schemas define the nodes in the ADT schema.
So, below is how my final solution is going to be like;

           

Strong name the projects, name your application and deploy the solution.

ADMIN CONSOLE

Now, the configuration part; I’ll have;

1. A Request-Response port and a location – To receive the HL7 message and send the ACK / NACK back. Make sure this port runs under a 32 bit host.

Port   Name

ReceivePort2Way

Location   Name

ReceivePort2Way.MLLP

Transport   Type

MLLP

Receive pipeline

BTAHL72XReceivePipeline (Add BizTalk Application1 as a reference to be able to see these pipeline   enlisted)

Send pipeline

BTAHL72XSendPipeline

Configuration

 

The most important amongst the above properties is the Port. It mediates the message transport between BizTalk and the HL7 sender. Make sure that no other services is using the port number you set. It’s also worth checking if the
firewall is blocking this port number. If so, add inbound, outbound exemption rules and get it opened.

2. A send port – To send the disassembled HL7 message (in XML format) to an output folder.

Port   Name

SendOutput.FILE

Transport   Type

FILE

Send   pipeline

PassThruTransmit

Filters

BTS.ReceivePortName   == ReceivePort2Way

Configuration

 

BTAHL7 CONFIGURATION EXPLORER 

Now, this is a very intriguing part. Users familiar with an EDI Trading Partner Management should easily develop a connect with this component. Only difference is that it’s external to Admin console and here’s exactly where the “Party”
comes into picture. You start by creating a new Party in Admin console.
 


The Party name must match the Party (MSH3) in your sample file which in my sample is Tutorial_ADTSystem. The party is the key that associates the incoming HL7 message to the validation, ACK procedures. No sooner the party is created, it shows up on the HL7 Config explorer.  Make sure you refresh. You will also see the schemas deployed from the solution. The config console is inherently smart to recognize

When a message goes thru the BTAHL72XReceivePipeline, it calls to the Config console. The config console is inherently smart enough to realize the Party name within the sample file, loads the settings and does the validation, disassembling and acknowledges the sender.

Below are the settings at each Tab you have to make to get this sample working.

  1. Party Aliases – No changes. You will see the party name, Tutorial_ADTSystem listed by default.
  2. Batch Definition – We aren’t doing debatching here. So this is irrelevant.
  3. Batch Schedule – No changes here either.
  4. Acknowledgement
    1. Change Acknowledgement Type to Original Mode
    2. Check Route ACK to send pipeline on request-response receive port
  5. Validation
    1. Check Validate Body segments
    2. Check Allow trailing delimiters (separators)
    3. The schema name space defaults to http://microsoft.com/HealthCare/HL7/2X
  6. MSH Map – We don’t need anything here either.

Save the settings are you are almost done!

TESTING 

As I have no real time HL7 system to test my solution, I am going to have to leverage onto alternate simulation methods. Fortunately, HL7 accelerator comes with a pair of fine utilities that let you simulate receive and send for MLLP adapter. Navigate to Drive: \Program Files (x86)\Microsoft BizTalk 2013 Accelerator for HL7\SDK\MLLP Utilities and you will locate the below utilities there;

  

You need to execute these utilities from command prompt. In my tests, I’d only need the MLLPSend.

You could read more on this at http://msdn.microsoft.com/en-us/library/ee404935.aspx

Let me explain my test cases. Process a

1. Clean file with a valid header segment (MSH), and body. [GoodMsg.txt in the attachment]

For starters, open a cmd and set the path to the MLLPSend utility folder.
   CD Drive: \Program Files (x86)\Microsoft BizTalk 2013 Accelerator for HL7\SDK\MLLP Utilities

- Edit and copy the below command onto the window and submit.
MLLPSend.exe /i localhost /p 10000 /SB11 /EB 28 /CR 13 /f "—filepath--\GoodMsg.txt" /twoway

- This sends my file to the two way receive location, ReceivePort2Way.MLLP we created thru port 10000.

- The file is first disassembled against the ADT^A03 schema and validated to true.

- Since it being a two way port, the ACK is sent back over the same channel by the response port. You will get to see a RESPONSE file in the same folder the source file resided, thanks to MLLPSend. And it content looks like below. The “AA (Application Accept)” value in the MSA segment signifies that the transaction was a success.

   

-  The resultant xml message is subscribed to by the file send port, SendOutput.FILE.


2. File with a valid header, but invalid body composite. [InvalidDate.txt in the attachment] 

This file contains an invalid datetime stamp in its third row as highlighted:


-  I execute the same MLLPSend command with the exception of the filename.
   MLLPSend.exe /i localhost /p 10000 /SB 11 /EB 28 /CR 13 /f "—filepath--\InvalidDate.txt" and below is how my RESPONSE file is going to be like.

 

-  My HL7Receive pipeline instantly found the datetime value to be invalid and threw a “Data type error”. And if you take a closer look, you will see that MSA flag changed to “AE (Application Error)” this time.


3. File with an invalid header  [InvalidHeader.txt in the attachment] 

I deliberately messed up with the Party name and the MessageType here.



-   I had no acknowledgments this time. However, event logs showed me what happened.

Validation error in header during parsing
Error # 1
Segment Id: MSH
Sequence Number: 1
Field Number: 9
Error Number: 200
Error Description: Unsupported message type
Encoding System: HL79999 

Error # 2
Segment Id: MSH
Sequence Number: 1
Field Number: 9
Error Number: 201
Error Description: Unsupported event code
Encoding System: HL79999

- It clearly couldn’t recognize the message type of the message and without any further ado rejected the message.

I hope this helped you with a fundamental understanding of how the HL7 message processing works in BizTalk.Microsoft started supporting HL7 accelerator alongside ROSETTANET and SWIFT in BizTalk 2006 though these standards existed before that. And there has been an overwhelming improvisation rate on this area ever since.  I am confident that the coming years would see the advent of more and more interesting features on the accelerators.

Written BY
Rajkumar Damodaran

Reviewed BY
Maria Quian

Microsoft GTSC

 

How to submit your Kodu Kup UK entries–closing date 30th May

MSDN Blogs - Fri, 05/02/2014 - 05:00

Blog originally posted on the Teachers Blog by Stuart Ball.

So the time is nearly upon us . . . the deadline for entries for the Kodu Kup is fast approaching as all games must be submitted by 30th May. Before you can submit the games they will need to be exported from Kodu Game Lab, this is a very simple process, here is a video that shows how to export:

Once you have exported your game you will be able to upload your team’s entry to the Microsoft Educator Network.

What should I be submitting?

This year the entry should consist of the following:

  • The game itself
  • Game design documentation (showing a clear storyline has been developed)

To submit a team’s work you must first become a member of the Microsoft Educator Network website: www.pil-network.com. Once you have signed up you will be able to submit your entries by adding a new ‘Learning Activity’ by clicking ‘Resources’ in the menu and selecting ‘add learning activity’, as shown here:

You will then be required to add some basic information about your entry as shown below. It is very important these instructions are followed accurately otherwise your entry may not be found by the judges. The name of the learning activity should be the name of the game, under ‘learning objectives’ make sure you add “kodu kup” and in the description clearly state the following:

  • What the game is about
  • Team name
  • School name
  • Your name and school email address

When you get to the section on ‘Supporting’ resources you will need upload your students’ work.

If your students have created their game using Project Spark they will first need to share their game through the Project Spark website, you will then be able share the link to this in the supporting resources above.

For a more detailed breakdown of this process check out our teachers resources: http://bit.ly/KoduKup 

What is Kodu? …just in case you don’t know…

Kodu is a visual programming language made specifically for creating games. It is designed to be accessible for children as young as 6 year olds and enjoyable for anyone

Developed by Microsoft Research, Kodu runs on PC and Xbox allowing rapid design creation. Kodu is available for free

The Kodu User Interface is easy to use and visually attractive especially to primary phase pupils

Its ‘code’ syntax used is simple, intuitive, yet allows a high degree of computational thinking and programming fundamentals

Kodu is easily integrated throughout the curriculum, with strong links to numeracy and literacy, as well as science, maths and geography

There is plenty of support with resources and online communities including: www.kodugamelab.com www.pil-network.com www.planetkodu.com

Kodu is a great start to computing. And to a new European adventure with Kodu Kup Europe

What is the Competition about?

The first Kodu Kup Europe involves 8 countries: Belgium, Estonia, Finland, Greece, Lithuania, Norway, Portugal, and UK

In the UK you can ONLY get to the European final by entering this year’s Kodu Kup in the UK . There is still time to enter. Details here

The winning team from the UK Kodu Kup will win an invite to compete in this competition.

More information is available at www.kodukup-europe.org   Follow #kodukup_eu for updates and news

How to Save and Share Map Screenshots in Windows Store Apps (.NET)

MSDN Blogs - Fri, 05/02/2014 - 04:55

A while ago I wrote a blog post on How to Share Maps Using the Search Charm in Windows Store Apps. In that blog post we made use of the Bing Maps REST Imagery service to generate a static image of the map that we could share in an email. This method has a couple of limitations. The first is that you can only render pushpins and routes on the static map image. The second is that the pushpin icon is limited to one that already exists in the service. This might be acceptable for simple applications but what if we want a true screenshot of our map? In this blog post we are going to take a look at how to take a screenshot of the map which we can then either share via the Share charm or save as a local file for use later in documents or presentations.

Full source code for this blog can be found in the MSDN Code Sample Gallery.

Before we dive in, its worth noting that if you just want a screenshot of your app there are three ways to go about this. The first is simply press the “Print Screen” button on your keyboard when your app is running to add a screenshot of your app to the clipboard. The second method applies to tablets and consists of pressing and holding down the Windows button on the tablet and the volume down button at the same time. The third method appears to be new in Windows 8.1 Update 1 and consists of pressing on the Share button and then clicking on the down arrow that appears. You will see at least two options; one to take a screenshot and the other to share the app in the Windows Store.

The Bing Maps Terms of Use allow you to make use of screenshots of the maps however there are some legal limitations to be aware that are documented under the Bing Maps Print Rights.

Creating the Base Project

To get started open Visual Studio and create a new project in C# or Visual Basic. Select the Blank App template, call the application BingMapsScreenshots, and then press OK.

Next, add a reference to Bing Maps SDK. Right click on the References folder and press Add Reference. Select Windows → Extensions, and then select Bing Maps for C#, C++ and Visual Basic. If you do not see this option, be sure to verify that you have installed the Bing Maps SDK for Windows Store apps. While you are here, also add a reference to the Microsoft Visual C++ Runtime Package, as this is required by the Bing Maps SDK when developing using C# or Visual Basic. Press OK.

In Solution Explorer, set the Active solution platform in Visual Studio by right clicking on the Solution folder and selecting Properties. Select Configuration Properties → Configuration. Find your project and, under the Platform column, set the target platform to x86, and press OK.

Now open the MainPage.xaml file and update the XAML to the following.

<Page
x:Class="BingMapsScreenshots.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:BingMapsScreenshots"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:m="using:Bing.Maps">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<m:Map Name="MyMap" Credentials="YOUR_BING_MAPS_KEY"/>

<ScrollViewer Name="Instructions" MaxWidth="400" Margin="100" HorizontalAlignment="Left"/>

<StackPanel Background="Black" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="100">
<Button Content="Take Screenshot of App" Tapped="TakeAppScreenshot_Tapped"/>
<Button Content="Take Screenshot of Map" Tapped="TakeMapScreenshot_Tapped"/>
<Button Content="Share Screenshot of Map" Tapped="ShareMapScreenshot_Tapped"/>
</StackPanel>
</Grid>
</Page>

This will add a map, a ScrollViewer for route instructions, and three buttons to the app. The buttons will be used to take screenshots and for sharing the map. Next open the MainPage.xaml.cs file and update it with the following code. This code contains the event handlers for the buttons without any logic in them yet. I’ve also added logic to display a route from Seattle to Miami on the map when the app loads so that we have something interesting to share.

C#

using System;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Windows.ApplicationModel.DataTransfer;
using Windows.Graphics.Imaging;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;

namespace BingMapsScreenshots
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();

MyMap.Loaded += MyMap_Loaded;
}

private async void MyMap_Loaded(object sender, RoutedEventArgs e)
{
var directionsManager = MyMap.DirectionsManager;
directionsManager.Waypoints.Add(new Bing.Maps.Directions.Waypoint("Seattle, WA"));
directionsManager.Waypoints.Add(new Bing.Maps.Directions.Waypoint("Miami, FL"));

Instructions.Content = MyMap.DirectionsManager.RouteSummaryView;
await directionsManager.CalculateDirectionsAsync();
}

private void TakeAppScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
}

private void TakeMapScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
}

private void ShareMapScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
}
}
}

VB

Imports Windows.ApplicationModel.DataTransfer
Imports Windows.Storage.Streams
Imports Windows.Graphics.Imaging

Public NotInheritable Class MainPage
Inherits Page

Public Sub New()
Me.InitializeComponent()

AddHandler MyMap.Loaded, AddressOf MyMap_Loaded
End Sub

Private Async Sub MyMap_Loaded(sender As Object, e As RoutedEventArgs)
Dim directionsManager = MyMap.DirectionsManager

directionsManager.Waypoints.Add(New Bing.Maps.Directions.Waypoint("Seattle, WA"))
directionsManager.Waypoints.Add(New Bing.Maps.Directions.Waypoint("Miami, FL"))

Instructions.Content = MyMap.DirectionsManager.RouteSummaryView
Await directionsManager.CalculateDirectionsAsync()
End Sub

Private Sub TakeAppScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
End Sub

Private Sub TakeMapScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
End Sub

Private Sub ShareMapScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
End Sub
End Class

At this point if we run the app and give it a moment to load the route it will look like this. Pressing any of the buttons won’t do anything as we haven’t added the logic for them yet.

Saving a Screenshot

We can create a screenshot of a FrameworkElement by using a RenderTargetBitmap. To keep things clean, we will create a couple of helper Task methods. The first method will take in a FrameworkElement to take a screenshot of and an IRandomAccessStream to save the screenshot to. This method will encode the screenshot as a PNG image file. The second helper method will only take in a FrameworkElement and will return a RandomAccessStreamReference. Notice that these methods take in a FrameworkElement and not a Map object. This allows us to pass in just about anything that is displayed in our app that we want to take a screenshot of. Add the following code to the MainPage.xaml.cs file.

C#

private async Task ScreenshotToStreamAsync(FrameworkElement element, IRandomAccessStream stream)
{
var renderTargetBitmap = new Windows.UI.Xaml.Media.Imaging.RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(element);

var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

var dpi = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().LogicalDpi;

var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
dpi,
dpi,
pixelBuffer.ToArray());

await encoder.FlushAsync();
}

private async Task<RandomAccessStreamReference> ScreenshotToStreamReferenceAsync(FrameworkElement element)
{
var ms = new InMemoryRandomAccessStream();
await ScreenshotToStreamAsync(element, ms);
ms.Seek(0);
return RandomAccessStreamReference.CreateFromStream(ms);
}

VB

Private Async Function ScreenshotToStreamAsync(element As FrameworkElement, stream As IRandomAccessStream) As Task
Dim renderTargetBitmap = New Windows.UI.Xaml.Media.Imaging.RenderTargetBitmap()
Await renderTargetBitmap.RenderAsync(element)

Dim pixelBuffer = Await renderTargetBitmap.GetPixelsAsync()

Dim dpi = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().LogicalDpi

Dim encoder = Await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream)
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
renderTargetBitmap.PixelWidth,
renderTargetBitmap.PixelHeight,
dpi,
dpi,
pixelBuffer.ToArray())

Await encoder.FlushAsync()
End Function

Private Async Function ScreenshotToStreamReferenceAsync(element As FrameworkElement) As Task(Of RandomAccessStreamReference)
Dim ms = New InMemoryRandomAccessStream()
Await ScreenshotToStreamAsync(element, ms)
ms.Seek(0)
Return RandomAccessStreamReference.CreateFromStream(ms)
End Function

Next we will create a method that creates a screenshot of a FrameworkElement and then saves it to a file using the FileSavePicker. Add the following code to the MainPage.xaml.cs file.

C#

private async void SaveScreenshot(FrameworkElement captureSource, string suggestedName)
{
//Create a FileSavePicker.
var savePicker = new Windows.Storage.Pickers.FileSavePicker()
{
DefaultFileExtension = ".png",
SuggestedFileName = suggestedName,
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary
};

savePicker.FileTypeChoices.Add(".png", new System.Collections.Generic.List<string> { ".png" });

//Prompt the user to select a file.
var saveFile = await savePicker.PickSaveFileAsync();

//Verify the user selected a file.
if (saveFile != null)
{
using (var fileStream = await saveFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
{
//Capture the screenshot and save it to the file stream.
await ScreenshotToStreamAsync(captureSource, fileStream);
}
}
}

VB

Private Async Sub SaveScreenshot(captureSource As FrameworkElement, suggestedName As String)
'Create a FileSavePicker.
Dim savePicker = New Windows.Storage.Pickers.FileSavePicker()
savePicker.DefaultFileExtension = ".png"
savePicker.SuggestedFileName = suggestedName
savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary

savePicker.FileTypeChoices.Add(".png", New System.Collections.Generic.List(Of String)(New String() {".png"}))

'Prompt the user to select a file.
Dim saveFile = Await savePicker.PickSaveFileAsync()

'Verify the user selected a file.
If saveFile IsNot Nothing Then
Using fileStream = Await saveFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite)
'Capture the screenshot and save it to the file stream.
Await ScreenshotToStreamAsync(captureSource, fileStream)
End Using
End If
End Sub

We can now update the button handlers for capturing screenshots to make use of this method. The first handler creates a screenshot of the whole app, and the second handler will create a screenshot of just the map.

C#

private void TakeAppScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
SaveScreenshot(this, "AppScreenshot.png");
}

private void TakeMapScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
SaveScreenshot(MyMap, "MapScreenshot.png");
}

VB

Private Sub TakeAppScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
SaveScreenshot(Me, "AppScreenshot.png")
End Sub

Private Sub TakeMapScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
SaveScreenshot(MyMap, "MapScreenshot.png")
End Sub

If you run the application and press the button to take a screenshot of just the map you will be prompted to select a file to save the screenshot to. Once this is done, if you view the screenshot it should look something like the following image. Notice that our buttons for taking screenshots and the route instructions are not in the image as they are not a part of the map.

Sharing a Screenshot

In order to share our map we will need to make use of the Share charm. To do this we will need to attach a DataRequested event to the DataTransferManager when the user navigates to the app. We will also remove this event handler when the user navigates away from the app. When this event is triggered we will generate two screenshots, one of the map and the other of the route instructions. Notice that for the route instructions we are capturing a screenshot of the Map.DirectionsManager.RouteSummaryView element rather than the Instructions ScrollViewer element. The main reason for this is that the ScrollViewer will clip the route instructions to only those that are visible on the screen whereas using the RouteSummaryView captures the full set of instructions. We will then share the images by setting the HTML format of the share charm in a similar manner to how we did it in the previous blog post on sharing maps. Add the following code to the MainPage.xaml.cs file.

C#

protected override void OnNavigatedTo(Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);

//Register Share Charm handler
DataTransferManager.GetForCurrentView().DataRequested += ShareScreenshot;
}

protected override void OnNavigatedFrom(Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
base.OnNavigatedFrom(e);

//Unregister Share Charm handler
DataTransferManager.GetForCurrentView().DataRequested -= ShareScreenshot;
}

private async void ShareScreenshot(DataTransferManager sender, DataRequestedEventArgs args)
{
//A temporary image URL that is used for referencing the created map image.
string localImage = "ms-appx:///images/map.png";
string instructionsImage = "ms-appx:///images/instructions.png";

//Handle the Share Charm request and insert HTML content.
var request = args.Request;
request.Data.Properties.Title = "My Map Screenshoot";
request.Data.Properties.Description = "Share a screenshot of the map.";

request.Data.SetHtmlFormat(HtmlFormatHelper.CreateHtmlFormat(
string.Format("Here is a screenshot of the map and directions.<br/><br/><img src='{0}'/><br/><img src='{1}' style='height:{2}px;width:{3}px;'/>",
localImage, instructionsImage,
MyMap.DirectionsManager.RouteSummaryView.ActualHeight,
MyMap.DirectionsManager.RouteSummaryView.ActualWidth)));

//Create memory stream with screenshot of map.
request.Data.ResourceMap[localImage] = await ScreenshotToStreamReferenceAsync(MyMap);

//Create memory stream with screenshot of route instructions.
request.Data.ResourceMap[instructionsImage] = await ScreenshotToStreamReferenceAsync(MyMap.DirectionsManager.RouteSummaryView);
}

VB

Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
MyBase.OnNavigatedTo(e)

'Register Share Charm handler
AddHandler DataTransferManager.GetForCurrentView().DataRequested, AddressOf ShareScreenshot
End Sub

Protected Overrides Sub OnNavigatedFrom(e As NavigationEventArgs)
MyBase.OnNavigatedFrom(e)

'Unregister Share Charm handler
RemoveHandler DataTransferManager.GetForCurrentView().DataRequested, AddressOf ShareScreenshot
End Sub

Private Async Sub ShareScreenshot(sender As DataTransferManager, args As DataRequestedEventArgs)
'A temporary image URL that is used for referencing the created map image.
Dim localImage = "ms-appx:///images/map.png"
Dim instructionsImage = "ms-appx:///images/instructions.png"

'Handle the Share Charm request and insert HTML content.
Dim request = args.Request
request.Data.Properties.Title = "My Map Screenshoot"
request.Data.Properties.Description = "Share a screenshot of the map."

request.Data.SetHtmlFormat(HtmlFormatHelper.CreateHtmlFormat(
String.Format("Here is a screenshot of the map and directions.<br/><br/><img src='{0}'/><br/><img src='{1}' style='height:{2}px;width:{3}px;'/>",
localImage, instructionsImage,
MyMap.DirectionsManager.RouteSummaryView.ActualHeight,
MyMap.DirectionsManager.RouteSummaryView.ActualWidth)))

'Create memory stream with screenshot of map.
request.Data.ResourceMap(localImage) = Await ScreenshotToStreamReferenceAsync(MyMap)

'Create memory stream with screenshot of route instructions.
request.Data.ResourceMap(instructionsImage) = Await ScreenshotToStreamReferenceAsync(MyMap.DirectionsManager.RouteSummaryView)
End Sub

The final step is to add the logic for our custom share button. Update the ShareMapScreenshot_Tapped button handler with the following code.

C#

private void ShareMapScreenshot_Tapped(object sender, TappedRoutedEventArgs e)
{
//Show the charm bar with Share option opened
DataTransferManager.ShowShareUI();
}

VB

Private Sub ShareMapScreenshot_Tapped(sender As Object, e As TappedRoutedEventArgs)
'Show the charm bar with Share option opened
DataTransferManager.ShowShareUI()
End Sub

If you run the application, wait for the route to load, and then either press our custom share button or use the standard Share charm button, you will be able to share the map and the route instructions. If you select the option to share using the Mail app you should see the map and instructions in the mail app flyout like in the image below.

If you are looking for some other great resources on Bing Maps for Windows Store apps, look through this blog or check out all the Bing Maps MSDN code samples.

General availability of Microsoft Dynamics AX 2012 R3....

MSDN Blogs - Fri, 05/02/2014 - 04:37

May 1 - General availability of Microsoft Dynamics AX 2012 R3.This is a major milestone as this update to our ERP solution for enterprises and upper mid-market businesses represents a significant step for the entire industry toward the future of ERP, with apps, device and services in the cloud as cornerstones of its new capabilities.

R3 is continuing the revolution of the enterprise level business solutions we are delivering to customers. R3 will help enterprises better engage with their customers, more effectively run their businesses and expand their operations.  It features:

  • Modern apps: A new end to end apps and services framework allowing businesses to use, develop, and distribute modern apps for specific scenarios and mobile devices that can easily and securely connect with Microsoft Dynamics AX. This framework brings together some of the great Microsoft products in specific business scenarios including Windows Azure, Windows Intune, and Windows 8.
  • Run in the cloud:  Microsoft Dynamics AX 2012 R3 adds support for deployment on Windows Azure via infrastructure as a service. This capability delivers high availability of data and disaster recovery data, as critical business data is stored in the cloud and can be
    retrieved by businesses virtually anytime, anywhere (planned to be available after GA). Pre-configured environments are also available on Windows Azure for businesses to speed deployment, and significantly reduce time to value from Microsoft Dynamics AX 2012 R3, for demonstration, development, testing and production usage.
  • Deployment and manage through the cloud with Microsoft Dynamics Lifecycle Services which introduces new solutions for serviceability and support to help organizations improve the predictability of implementations and provides them with the agility required to keep up with ever-changing business environments.
  • New Warehouse and transportation management capabilities integrated in Microsoft Dynamics AX helping organizations to offer customers choice, flexibility, and competitive pricing through lowering operational costs.  
  • Enhancing the omni-channel retail offering even further with modern POS for sales associates, call-center capabilities, and social media and eCommerce integrations.

Blogs:  Check out all the latest Microsoft Dynamics AX 2012 R3 blog posts to learn about the new capabilities in Microsoft Dynamics AX 2012 R3.

Microsoft Dynamics AX General Session at Convergence offers a great overview of the new capabilities being delivered complete with compelling customer stories. And if you have still not attended the Online Launch event, you can still sign up on demand here: https://presentations.inxpo.com/Shows/microsoft/4-10-14/Registration/Registration.html?AffiliateKey=21572&AffiliateData=1939

Additional information for customers and partners is now available on the Microsoft Dynamics website.

Social outreach: Twitter:  follow @msftdynamics and retweet us.  

 

 

Perfview ile wt ("watch and trace") çıktı analizi

MSDN Blogs - Fri, 05/02/2014 - 03:53

Daha önceki bir yazımda "Perfview" uygulamasını tanıtmış, ve performans incelemeleri için nasıl kullanılabileceğini ele almıştım. Perfview, sistemde çalışan process ve thread'ler üzerinden belirli aralıkla "Callstack" sample'ları toplayarak hangi çağrıların daha çok zaman aldığını belirlememizi sağlıyor. Bunun yanısıra, ".net heap" analizi, event analizi vs. gibi farklı analiz tiplerine de olanak sağlamakta.

Perfview uygulaması, ".NET Runtime, Architect" ekibinden "Vance Morrison" tarafından yazıldı. Uygulama ile ilgili her türlü gelişme ve yeniliği takip etmek için "Vance Morrison"un kişisel blog'unu takip edebilirsiniz. Ayrıca gine "Channel9" üzerinde de pekçok faydalı video mevcut.

Sizlere bu yazımda geçenlerde keşfettiğim bir özellikten bahsetmek istiyorum. Bu özelliği "help" dosyasını incelerken tesadüfen farkettim. Genellikle "Windbg" üzerinden bir process'e bağlı, "debugging" yaparken "wt" ("watch and trace") komutunu  fonksiyonların birbirlerini nasıl çağırdığını görmek ve iş mantığını anlamak, hangi aşamada hata alındığını tespit etmek gibi pek çok farklı nedenden kullanıyoruz. Öncelikle ilgilendiğimiz fonksiyonu üzerine bir "breakpoint" koyup, bu breakpoint'e gelindiğinde komutu çalıştırarak o fonksiyonun hangi fonksiyonları nasıl çağırdığını görebiliyoruz. Aşağıda örnek bir çıktı mevcut:

0:000> wt                 
Tracing MyModule!myFunction to return address 00401137

  105     0 [  0] MyModule!myFunction
    1     0 [  1]   MyModule!ILT+1555(_printf)
    9     0 [  1]   MyModule!printf
    1     0 [  2]     MyModule!ILT+370(__stbuf)
   11     0 [  2]     MyModule!_stbuf
    1     0 [  3]       MyModule!ILT+1440(__isatty)
   14     0 [  3]       MyModule!_isatty
   50    15 [  2]     MyModule!_stbuf
   17    66 [  1]   MyModule!printf
    1     0 [  2]     MyModule!ILT+980(__output)
   59     0 [  2]     MyModule!_output
   39     0 [  3]       MyModule!write_char
  111    39 [  2]     MyModule!_output
   39     0 [  3]       MyModule!write_char

....

   11     0 [  5]           kernel32!__SEH_epilog4
   54 11675 [  4]         kernel32!ReadFile
  165 11729 [  3]       MyModule!_read
  100 11895 [  2]     MyModule!_filbuf
   91 11996 [  1]   MyModule!fgets
54545 83789 [  0] MyModule!myFunction
    1     0 [  1]   MyModule!ILT+1265(__RTC_CheckEsp)
    2     0 [  1]   MyModule!_RTC_CheckEsp
54547 83782 [  0] MyModule!myFunction

Eğer "wt" çıktısını ( "105 0 [  0] MyModule!myFunction" satırlarının olduğu) bir text dosyasına "*.wt" uzantısı ile kaydedersek bu uzantıyı "Perfview" uygulaması tanıyabilmekte. Ve ilgili fonksiyon çağrılarını "Perview" uygulamasının "Stack Viewer" ekranında inceleyebiliriz. Daha da güzeli; iki farklı "wt" çıktısını menü üzerindeki "Diff" özelliği ile de karşılaştırabilmekteyiz:

 

Umarım bu özellik performans analizlerinizde faydalı olur.

İyi çalışmalar,
Mert

Dynamics C5 2014 – flere værktøjer til revisorer

MSDN Blogs - Fri, 05/02/2014 - 03:34

Mange Microsoft Dynamics C5 2014 partnere møder revisorer, som spørger til hvad fordelene ved Microsoft Dynamics C5 2014 er for dem. Vi har her samlet et udpluk af de ting, som gør revisorer mere produktive, når de skal gennemgå en virksomheds regnskab.

Startsiden – Økonomisk overblik
Allerede på startsiden af Microsoft Dynamics C5 2014 har vi gjort det endnu lettere for revisorer, at få et hurtigt overblik over deres klienters økonomiske situation. Et diagram giver overblik over kunders nøgletal, indtægter og udgifter, kassebeholdning samt likviditeten
i virksomheden. Desuden vises resultatopgørelsen baseret på de seneste posteringer direkte på startsiden.

 

 

Som det kan ses i billedet ovenfor, kan man i højre side hurtigt danne sig et overblik af den pågældende virksomhed. Samtidig er det nemt at danne sig et overblik over, hvilke aktiviteter kunden skal tage aktion på via de blå bokse til venstre (salg, køb, tilgodehavender og gæld).

 

Søgning i posteringer – Hurtigere indblik
Et andet eksempel er, at det nu kun tager et par enkelte klik for, at se om en kunde har bogført posteringer og transaktioner korrekt. Dette gøres via navigér-funktionen (som vist ovenfor) der viser alle poster og modposter i kundens regnskab. Det har ikke før været så simpelt og tilgængeligt, at finde og revidere kundedata som tilfældet er i Microsoft Dynamics C5 2014. Selve navigér-funktionen kan ses nedenfor, hvor en søgning på bilagsnr. 103003 er foretaget, hvorefter hver post kan åbnes og gennemses med et enkelt klik.

 

 

Filtrering – nemmere revision
I forlængelse heraf kan filter- og linjesøgningsredskaberne nævnes, da de har simplificeret og optimeret revisorens søgearbejde på et hidtil uset niveau. Microsoft Dynamics C5 2014 er mere gennemskueligt og åbent end nogensinde før, hvilket er årsagen til at Filter- og linjesøgning er blevet et gennemgående element i hele versionen. Så om du søger i salgsordre eller om du søger i diverse posteringer, er du ikke mange klik fra et fuldt overblik over lige præcis de transaktioner og data, som du søger. Nedenfor vises det, hvor simpelt det er, at tilføje og fjerne filtre fra en søgning i salgsordrer. I dette eksempel søges der på Valutakode og bogføringsdato, men antallet af filtre er op til revisoren.

 

Til slut skal det nævnes, at hele brugerfladen er blevet strømlinet med Microsoft Office pakken og ikke mindst Excel. Alt lige fra design til data-integration er bygget op via samme tanke om frihed og funktionalitet, som er kendetegnet ved resten af Office pakken. Derfor er det selv for helt ny Microsoft Dynamics C5 bruger, nu hurtigt og let at komme i gang med revisor-arbejdet.

Hvis du er revisor, kan du i øvrigt finde mere information ved at klikke her.

Med venlig hilsen

Dynamics Teamet

Installing HL7 Accelerator for BizTalk Server

MSDN Blogs - Fri, 05/02/2014 - 03:33

In this article, I will take you right through the installation of HL7 accelerator.

Installation Pre-requisites

  1. BizTalk Server configured. (I am using BizTalk 2013 RTM).
  2. The login user must be a part of BizTalk Server Administrator’s group.    
  3. Check the OS and SQL requirements at  http://support.microsoft.com/kb/926628
  4. A 32 bit host instance readily created and running. Check http://support.microsoft.com/kb/2009616/en-US

Installation

This is no different from a conventional software installation. You will find the set up file for “BizTalk Accelerators” in a BizTalk DVD or an ISO downloaded from MSDN. Just transit thru the set up screens and you are done!

           

Now the important thing is to check if the installation was successful. Of course you will see errors if any of the components fails to install. But there are a couple of additional pointers which is worth checking.

  1. MLLP Adapter – Go to Admin console > Adapters > MLLP adapter gets added. If you don’t see this already, add it as new adapter from the drop down available. 
  2. SQL – A new database namely “BTAHL7” gets created in your SQL server.
  3. Admin console - Open BizTalk Application 1 > Receive locations. You should see the below two locations created and running.

  4. HL7 Send and Receive pipelines

  5. SDK samples, schemas and MLLP Utilities in Drive: \Program Files (x86)\Microsoft BizTalk 2013 Accelerator for HL7.
  6. Visual Studio – New template for HL7 under BizTalk projects
  7. BTAHL7 configuration Explorer – This is to make Party settings for HL7

 Known Issues with HL7 Installation

1. Error 1920. Service HL7 Logging Service (btsaalsvc) failed to start. Verify that you have sufficient privileges to start system services.   
         

Cause: HL7 logging service is stopped. 

Resolution: Switch to services.msc and start the HL7 Logging service.  Click Retry, it should continue the installation.

2. Faulting application BTSNTSvc.exe, version 3.8.368.0, time stamp 0x49b1dadf, faulting module kernel32.dll, version 6.0.6002.18704, time stamp 0x5065cd44, exception code 0xe0434f4d, fault offset 0x0001d8cb, process id 0x2b44, application start time 0x01cf58c323011d0f.  

Cause: Default host BizTalkServerApplication might be running as a 64bit host.

Resolution: Change it to a 32 bit host. This is documented at http://support.microsoft.com/kb/2009616/de

3. Error while creating receive location. 
        

Cause: Missing Artifacts - If it fails to create any artifacts, it will return an error.  In the example below, it created the Receive Port but was unable to create the receive location because the File adapter was missing.

Resolution: Just with a regular customer’s solution/application all the artifacts it depends on must be there for Accelerators to configure successfully. If you have an HL7 environment to compare to you can manually   recreate the missing artifacts.  In this case the receive location for batching can be manually created. 

4. The specified account “<>”is invalid. Error Code: The handle is invalid. 
      

Cause: Wrong Platform – Known issue if you have installed BTS 2013 on WS 2012 R2. Even if BizTalk 2013 is successfully installed/configure on wrong operating system, you will see the error below if you try to install HL7.

Resolution: Install / configure BizTalk 2013 inline with the correct software requisites. In this case use Windows 2012 and not Windows 2012 R2. 

5. Run time error – Unable to log message “A message was received of type http…” to the event log due to exception: “No connection could be made because the target machine actively refused it 127.0.0.1:4000” 
   

Cause: Known issue 

Resolution: Start HL7Logging services in services.msc

 

Written BY
Rajkumar Damodaran

Reviewed BY
Maria Quian

Microsoft GTSC

Announcing the new Microsoft Press Store and special discount

MSDN Blogs - Fri, 05/02/2014 - 03:00

We are excited to announce the launch of MicrosftPressStore.com! Take advantage of our new store special and save 40% on all books and eBooks through May 11, 2014. This includes new and popular titles like:

· Windows Server 2012 R2 Inside Out: Services, Security, & Infrastructure

· High Performance Windows Store Apps

· Training Guide: Installing and Configuring Windows Server 2012 R2

· Windows 8.1 Step by Step

· Training Kit (Exam 70-461): Querying Microsoft SQL Server 2012

· Code Complete, 2nd Edition

The Microsoft Press Store also offers:

· Free U.S. shipping every day

· Buy an eBook, get three formats: Access PDF, EPUB and MOBI files to use on your computer, tablet, and mobile devices.

· eBook deal of the week: Save up to 60% on featured titles.

Be sure to sign up for Microsoft Press newsletters and offers to be the first to learn about new releases, upcoming products, and more.

As we shared last month, Pearson is the official distributor for Microsoft Press and books will continue to be sold by retailers around the world. Please visit the Microsoft Press page on InformIT.com for additional information on corporate, government, volume, education, and international sales.

Get help for the Windows 8.1 Camera app Webcams

MSDN Blogs - Fri, 05/02/2014 - 02:21

Also cover Webcams in general

Camera app and webcams help covering:

  • Opening the Camera app
  • Taking a photo or video About panoramas
  • Getting the best shot with photo loop
  • Changing settings, like the flash or timer
  • Switching to a different camera
  • Cropping to zoom in
  • Changing what happens when you tap the screen
  • Automatically saving your photos and videos online
  • Including info about where a photo was taken
  • Seeing the photos and videos you've taken with the Camera app
  • Editing or deleting photos and videos
  • Turning the camera off
  • If you have problems with your webcam
  • If your webcam isn't working with Skype

Camera app and webcams help

Rob

Technorati Tags: ,,,

Meet Cortana and Windows Phone 8.1

MSDN Blogs - Fri, 05/02/2014 - 01:58
One of the big announcements at build 2014 was Windows Phone 8.1 which offers a serious amount of functionality over and above Windows Phone 8.0. The new operating system is a significant update for the phone and is available as a developer preview for developers only. It will be rolling out with new phones shortly and we can expect it over the air as an update for everyone during the summer. For me the big improvements are: A new action centre which gives me access to my notifications and...(read more)

Using Reputation Scores in Office 365

MSDN Blogs - Fri, 05/02/2014 - 01:00

Written by education writer Gerald Haigh

In my recent blog on the Civica Education Conference http://blogs.msdn.com/b/ukschools/archive/2014/04/04/thoughts-on-civica-s-education-conference-amp.aspx

I mentioned a presentation on Office 365 in the classroom, by Paul Hart and Brendan Murphy. In the course of it they mentioned they used ‘Reputation Scores’.

It was something I hadn’t heard of before, so I called Paul, who’s a Civica e-learning consultant, to find out a little more about it.

‘Reputation Scores’, he told me, is a feature which enables the leader of a collaborative project – in the school setting presumably a teacher – to know which members of the group have actually engaged the discussion, when and how many times. So the teacher might, for instance, set a question for the group to discuss. As the students make suggestions and ask further questions of each other and the teacher, their ‘reputation score’ builds. There’s the opportunity for the teacher to give a ‘best reply’ award.

Paul Hart says,

‘It provides good opportunities for students to help each other – peer-to-peer support – so the teacher is not the only one responding. There’s group responsibility for the learning, all in it together, helping each other along the way.’

The reputation score, he says, adds an extra dimension,

‘The real power lies in the way it’s visible to the user and to all other users at the same time, immediately with no delay.’

The growing understanding and popularity of Office 365 with SharePoint Online means that the number of SharePoint users is rapidly increasing. One of the key features of this, and the whole Office 365 offering, is the way that it supports collaborative, anytime/anywhere learning, in a highly organised, flexible yet carefully monitored environment. ‘Reputation Scores’ fits beautifully into that, yet I suspect there will be some – many, perhaps – who are unaware that it exists. Paul Hart, in fact, calls it, ‘A hidden gem’ and you certainly do need to look for it, unless, that is, your IT team, or your provider have, like Civica, spotted its educational potential and made it easily accessible. Part of the reason is that in the adult business world the notion of scoring team members for their participation isn’t always seen as appropriate. In school, though, the act of collaboration itself is part of the learning process, to be encouraged and rewarded. As Paul explains,

‘Although it’s very relevant to today’s classrooms, in a business setting it might not have anything like as much potential, and that’s probably why it’s not always highlighted.’

 

Dynamics CRM 2013 IFD 構成時の AD FS Tips

MSDN Blogs - Fri, 05/02/2014 - 00:43

みなさん、こんにちは。

今回は Microsoft Dynamics CRM 2013 を IFD 構成にした際の AD FS の Tips をお届けします。
※以下の内容は Windows Server 2012 R2 AD FS を利用して検証しています。

サインアウトしないオプション

IFD を構成した場合ユーザーはフォーム認証画面でユーザー名とパスワードを入力する
必要がありますが、毎回入力することを避けたい場合 AD FS の設定を変更することで、
以下のように「サインアウトしない」オプションを表示できます。

手順

1. AD FS サーバーにログインして PowerShell を起動します。

2. 以下のコマンドを実行します。※サーバーレベルでの変更となります。
>Set-AdfsProperties –EnableKmsi $true

3. 以下のコマンドで設定値を確認できます。
>Get-AdfsProperties

4. ブラウザから IFD アドレスにアクセスします。

効果

サインアウトしないチェックボックスにチェックを入れてログインした
場合、一旦ブラウザを再起動しても再度ユーザー名、パスワードを
入力する必要がありません。
※ただしトークンの期限が完全に切れてしまった場合は再入力が
必要です。

トークンの有効期間を延長する

Microsoft Dynamics CRM の IFD では、ログインしたタイミングで AD
FS よりクレーム認証のトークンを受理しますが、既定で 60 分の有効
期限が設定されています。期限が切れる 20 分前に以下のメッセージが
表示されます。

この作業を行わずに期限が切れた場合は、一旦ブラウザを再起動して
ログイン作業を行う必要があり、上記で紹介したサインアウトしない
オプションを有効にしていても例外ではありません。

期限を延ばすには以下の手順で作業を行います。

手順

1. AD FS サーバーにログインして PowerShell を起動します。

2. 以下のコマンドで現在 AD FS に登録されている証明書利用者
信頼の名前とトークンの有効期限一覧を確認します。
>Get-AdfsRelyingPartyTrust | Select Name, TokenLifeTime
※ 値が 0 の場合は既定値です。

3. 以下のコマンドで任意の証明処利用者信頼のトークン有効期限を
指定します。
>Set-AdfsRelyingPartyTrust –TargetName <上記で確認した名前> –TokenLifeTime <分>

効果

指定した時間 20 分前まで、上記の確認メッセージが出ず利用できます。

テスト環境で証明書チェーンの確認を行わない

テスト段階で、AD FS は本番環境のものを利用するが、Microsoft
Dynamics CRM はテスト環境を利用していて、本番環境からテスト
環境に対する証明書チェーンの確認が行えない場合があります。

その場合はあくまでテスト目的で確認の設定をオフにすることで
対処が可能です。

手順

1. AD FS サーバーにログインして PowerShell を起動します。

2. 以下のコマンドで現在 AD FS に登録されている証明書利用者
信頼の名前とトークンの有効期限一覧を確認します。
>Get-AdfsRelyingPartyTrust | Select Name, SigningCertificateRevocationCheck

3. 以下のコマンドで証明書チェーンの確認を無効にできます。
>Set-AdfsRelyingPartyTrust –TargetName <上記で確認した名前> –SigningCertificateRevocationCheck None

効果

ログインに成功します。

- 中村 憲一郎

Pages

Subscribe to Randy Riness @ SPSCC aggregator
Drupal 7 Appliance - Powered by TurnKey Linux