Quantcast
Channel: MSDN Blogs
Viewing all 35736 articles
Browse latest View live

Become a Contributor to Business Central

$
0
0

We’re proud to announce the availability of the ALAppExtensions repository on GitHub. The repository serves as a platform that enables our active partner and customer communities to develop extensions in the AL language in cooperation with Microsoft or even other partners.

Why is this important? We’re steadily making the core application thinner, more extensible, and easier to localize by extracting areas of application business logic to extensions. This is true for add-ons and localizations. For example, we recently turned the local functionality for Denmark into four separate extensions, making it much easier to update regulatory features when requirements change.

We’ll publish the code in the ALAppExtensions repository so it’s open for your contributions. For example, you can use our extensions as starting points for vertical solutions of your own, or as samples for developing extensions in the AL language in general. Even if you aren’t ready to contribute, you can still use the source code to make changes locally, or just to explore it to see what’s going on.

Over time the source code will become available for more and more extensions, but to start with we’re about to publish it for three extensions:

Getting to the code

Interested? Go take a look. You can find the repository at https://github.com/Microsoft/ALAppExtensions. You don’t need to be a GitHub user to download files. Just go to the repository, choose Clone or download, and then Download ZIP.

 

 

If you're new to the world of AL development, check out the guidance in the Business Central developer content.

Our documentation is also open source

The ALAppExtensions repository is great for code, but what if you want to document your new extension? Our documentation is also open source and available on GitHub. You can find it in the dynamics365smb-docs repository. Just like the source code, you can download our Help content to make it your own and share it with others if you want. The repository offers information about writing in markdown, and the readme.md file gives you step-by-step guidance for extending and customizing our content. 


C#, Go, Java, Node.js, PHP, Python or Ruby: Choose your favorite language to develop Azure IoT application in VS Code

$
0
0

Hi developers! What's your favorite programing language? Which language would you like to develop an Azure IoT application? With the latest release of Azure IoT Toolkit, lots of popular languages are supported to quickly create an Azure IoT application in VS Code: C#, Go, Java, Node.js, PHP, Python and Ruby!

For scripting languages (Go, Node.js, PHP, Python and Ruby), the steps are pretty easy, you could follow this blog post to quickly make that.

For compiled language (C# and Java), there is one more step compared with the scripting languages, but it is still easy. Let's see how easy it is to create a Java application for Azure IoT Hub in VS Code.

Prerequisites

Generate Code

  1. Right-click your device and select Generate Code to monitor the device-to-cloud message
  2. In language list, select Java
  3. In code template list, select Send device-to-cloud message
  4. In pop-up file dialog, select the folder for your Java application
  5. A new VS Code window will open

Run Code

  1. Open Integrated Terminal of VS Code
  2. Run mvn clean package to install the required libraries and build the simulated device application
  3. Run java -jar target/simulated-device-1.0.0-with-deps.jar to run the simulated device application
  4. You will see the Java application is running. It is sending the simulated device data to IoT Hub every second.
  5. If you want to monitor the device-to-cloud message in VS Code, you could refer to our Wiki page.

 

If your preferred language is not supported yet, no worry! You could just submit your request in GitHub, or use the REST API to build your application. Let us know what languages you want! Feel free to leave your feedback or suggestion in our GitHub issue !

Useful Resources:

ASP.NET Core 2.2.0-preview1: Endpoint Routing

$
0
0

Endpoint Routing in 2.2

What is it?

We're making a big investment in routing starting in 2.2 to make it interoperate more seamlessly with middleware. For 2.2 this will start with us making a few changes to the routing model, and adding some minor features. In 3.0 the plan is to introduce a model where routing and middleware operate together naturally. This post will focus on the 2.2 improvements, we'll discuss 3.0 a bit further in the future.

So, without further ado, here are some changes coming to routing in 2.2.

How to use it?

The new routing features will be on by default for 2.2 applications using MVC. UseMvc and related methods with the 2.2 compatibility version will enable the new 'Endpoint Routing' feature set. Existing conventional routes (using MapRoute) or attribute routes will be mapped into the new system.

public void ConfigureServices(IServiceProvider services)
{
    ...
    
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

public void Configure(IApplicationBuilder app)
{
    ....
    
    app.UseMvc();
}

If you need to specifically revert the new routing features, this can be done by setting an option. We've tried to make the new endpoint routing system as backwards compatible as is feasible. Please log issues at https://github.com/aspnet/Routing if you encounter problems.

We don't plan to provide an experience in 2.2 for using the new features without MVC - our focus for right now is to make sure we can successfully shift MVC applications to the new infrastructure.

Link Generator Service

We're introducing a new singleton service that will support generating a URL. This new service can be used from middleware, and does not require an HttpContext. For right now the set of things you can link to is limited to MVC actions, but this will expand in 3.0.

public class MyMiddleware
{
    public MyMiddleware(RequestDelegate next, LinkGenerator linkGenerator) { ... }
    
    public async Task Invoke(HttpContext httpContext)
    {
        var url = _linkGenerator.GenerateLink(new { controller = "Store",
                                                    action = "ListProducts" });
    
        httpContext.Response.ContentType = "text/plain";
        return httpContext.Response.WriteAsync($"Go to {url} to see some cool stuff.");
    }
}

This looks a lot like MVC's link generation support (IUrlHelper) for now -- but it's usable anywhere in your application. We plan to expand the set of things that are possible during 2.2.

Performance Improvements

One of the biggest reasons for us to revisit routing in 2.2 is to improve the performance of routing and MVC's action selection.

We still have more work to, but the results so far are promising:
image

This chart shows the trend of Requests per Second (RPS) of our MVC implementation of the TechEmpower plaintext benchmark. We've improved the RPS of this benchmark about 10% from 445kRPS to 515kRPS.

To test more involved scenarios, we've used the Swagger/OpenAPI files published by Azure and Github to build code-generated routing benchmarks. The Azure API benchmark has 5160 distinct HTTP endpoints, and the Github benchmark has 243. The new routing system is significantly faster at processing the route table of these real world APIs than anything we've had before. In particular MVC's features that select actions such as matching on HTTP methods and [Consumes(...)] are significantly less costly.

Improvements to link generation behavior for attribute routing

We're also using this opportunity to revisit some of the behaviors that users find confusing when using attribute routing. Razor Pages is based on MVC's attribute routing infrastructure and so many new users have become familiar with these problems lately. Inside the team, we refer to this feature as 'route value invalidation'.

Without getting into too many details, conventional routing always invalidates extra route values when linking to another action. Attribute routing didn't have this behavior in the past. This can lead to mistakes when linking to another action that uses the same route parameter names. Now both forms of routing invalidate values when linking to another action.

A conceptual understanding

The new routing system is called 'Endpoint Routing' because it represents the route table as a set of Endpoints that can be selected by the the routing system. If you've ever thought about how attribute routing might work in MVC, the above description should not be surprising. The new part is that a bunch of concerns traditionally handled by MVC have been pushed down to a very low level of the routing system. Endpoint routing now processes HTTP methods, [Consumes(...)], versioning, and other policies that used to be part of MVC's action selection process.

In contrast to this, the existing routing system models the application is a list of 'Routes' that need to be processed in order. What each route does is a black-box to the routing system - you have to run the route to see if it will match.

To make MVC's conventional routing work, we flatten the list of actions multiplied by the number of routes into a list of endpoints. This flattening allows us to process all of MVC's requirements very efficiently inside the routing system.


The list of endpoints gets compiled into a tree that's easy for us to walk efficiently. This is similar to what attribute routing does today but using a different algorithm and much lower complexity. Since routing builds a graph based on the endpoints, this means that the complexity of the tree scales very directly with your usage of features. We're confident that we can scale up this design nicely while retaining the pay-for-play characteristics.

New round-tripping route parameter syntax

We are introducing a new catch-all parameter syntax {**myparametername}. During link generation, the routing system will encode all the content in the value captured by this parameter except the forward slashes.
Note that the old parameter syntax {*myparametername} will continue to work as it did before. Examples:

  • For a route defined using the old parameter syntax : /search/{*page},
    a call to Url.Action(new { category = "admin/products" }) would generate a link /search/admin%2Fproducts (notice that the forward slash is encoded)
  • For a route defined using the new parameter syntax : /search/{**page},
    a call to Url.Action(new { category = "admin/products" }) would generate a link /search/admin/products

What is coming next?

Expect more refinement and polish on the LinkGenerator API in the next preview. We want to make sure that this new API will support a variety of scenarios for the foreseeable future.

How can you help?

There are a few areas where you can provide useful feedback during this preview. We're interested in any thoughts you have of course, these are a few specific things we'd like opinions on. The best place to provide feedback is by opening issues at https://github.com/aspnet/Routing

What are you using IRouter for? The 'Endpoint Routing' system doesn't support IRouter-based extensibility, including inheriting from Route. We want what you're using IRouter for today so we can figure out how to accomplish those things in the future.

What are you using IActionConstraint for? 'Endpoint Routing' supports IActionConstraint-based extensibility from MVC, but we're trying to find better ways to accomplish these tasks.

What are your 'most wanted' issues from Routing? We've revisited a bunch of old closed bugs and brought back a few for reconsideration. If you feel like there are missing details or bugs in routing that we should consider please let us know.

Caveats and notes

We've worked to make the new routing system backwards compatible where possible. If you run into issues we'd love for you to report them at https://github.com/aspnet/Routing.

DataTokens are not supported in 2.2.0-preview1. We plan to address this for the next preview.

By nature the new routing system does not support IRouter based extensibility.

Generating links inside MVC to conventionally routed actions that don't yet exist will fail (resulting in the empty string). This is in contrast to the current MVC behavior where linking usually succeeds even if the action being linked hasn't been defined yet.

We know that the performance of link generation will be bad in 2.2.0-preview1. We worked hard to get the API definitions in so that you could try it out, and ignored performance. Expect the performance of URL generation to improve significantly for the next preview.

Endpoint routing does not support WebApiCompatShim. You must use the 2.1 compatibility switch to continue using the compat shim.

The evolution of Windows 8 charms

$
0
0


It's unclear what inspired the name for charms.
It may have come from the item of jewelry,
or perhaps from

wine glass charms

which are used at cocktail parties
in certain social circles
to identify which wine glass is yours.



Whatever the origin,
the charms feature quickly gained the internal nickname

Lucky Charms

from the breakfast cereal.



I'm going to skip the prehistory of charms
and just look at the evolution of the charm set.



Early design explorations came up with a list of

seven charms
.



  • Search

  • Share

  • Play To

  • Print

  • Pin

  • Stash (I think this was sort of like a clipboard)

  • Lookup (I don't know how this was different from Search)



After a few more design iterations, the list of charms evolved to



  • Search

  • Share

  • Switch

  • Start

  • Devices

  • Settings

  • Language



(There's a long story behind the Switch charm,
which I will have to tell some other time.)



Each charm opened a blossom,
which was a radial menu that opened up around the charm.
This blossom idea didn't last long.



Eventually, the designers settled on these charms:



  • Search

  • Share

  • Send To

  • Start

  • Connect

  • Settings



We're very close to what shipped in Windows 8.
Just two more tweaks.



The first tweak is that
the Connect charm was renamed Devices.



The second tweak is that the
Send To charm was removed.
The story behind this is a bit more complicated.



As originally envisioned,
the Share charm was for social sharing:
emailing a Web page to your friend,
posting to your Facebook page,
that sort of thing.
On the other hand, the Send To charm was for
sending data to another application,
like adding an item to a to-do list.




During the summer
,
we discovered that when our interns
wanted an application to receive data from another application,
it was pretty much a toss-up whether they registered the application
as a Share target or a Send To target.



What this told us that segregating the two
types of data sharing was interesting in a theoretical sense,
but in practice, people didn't really make a distinction
between the two.
A last-minute design change was made to merge the
Share and Send To charms into a single
Share charm, and made it cover both social sharing
and application sharing.



A happy side-effect of this reduction was that the number of
charms was an odd number,
allowing the Start charm to be placed in the center.

NEW RELEASE: Small Basic Online Public Preview (v0.9)

$
0
0

Hello! Head to the new Small Basic Website 2.0:

 

In the upper right corner, you'll notice the new "Start Coding Online" button!

This is our Public Preview release of Small Basic Online. It's version 0.9. For our Small Basic enthusiasts, you're going to wonder why we have an online version in addition to the desktop version. There are several main reasons for this:

  1. This allows us to have a platform agnostic version of Small Basic. For example, if you only had an Android tablet, you could use Small Basic right now!
  2. This allows folks to use Small Basic, when they can't download software on their system. Sometimes there are IT management limitations or other limitations.
  3. This is an important step toward an Open Source version of Small Basic! We've always wanted the community to help us build Small Basic, and this is a step on that journey!

But, like everything in life, the road is bumpy. Since we're an all volunteer team (and focus our development efforts to 3 days a year, during our Microsoft Hackathons), we're releasing this in passes in order to get to our destination. This version is Small Basic Online 0.9 (our public preview).

Release Pipeline

We have many steps in the future for Small Basic Online (and Small Basic Desktop):

  1. Release Small Basic Online 0.9. Done!
  2. Release Small Basic Online 1 (SBO 1). This should ship with our release of the Small Basic Website 2.1.
    1. The code is done for this and SB Website 2.1.
    2. We have a few bug fixes and improvements, but largely, SBO 1 is very similar to 0.9.
  3. Release Small Basic Desktop 1.3. This might ship before SBO 1.
    1. It has the bug fixes found in the Windows App Store mobile release, as well as 3 new languages, and extra coding help in the interface!
  4. Release Small Basic Online 1.1. You can see this project in the works over on GitHub: https://github.com/sb/SmallBasic-Online
    1. It's Open Source!
    2. I'd expect to see some bug fixes from Small Basic Online 1.0.
    3. We're building toward parity with SB Desktop. Hopefully, we'll eclipse the parity so far in SBO 1 and get closer before we release SBO 2.
    4. New features, including our first Debugger in a core SB release! It's Small and Basic, of course.
    5. I don't expect perfect parity with SBD, nor would we get complicated feature sets like Extensions or Graduate to work (yet).
  5. Release Small Basic Online 1.2-9
    1. I expect continual parity improvements.
    2. I also expect to find some features we hoped to get in SBD, but were never able to.
    3. We would be moving toward building a Desktop version in the exact same open source repository.
  6. Simultaneous release of Small Basic Online 2 and Small Basic Desktop 2.
    1. The vision would then come true, as we release both SBO 2 and SBD 2 at the same time, from the same source code.
    2. Obviously, we'd need both Extensions and Graduate for this to work out.
    3. I'd also expect to find further features we wanted in SBD, like in-app tutorials and an Extension Manager. And if we didn't get them yet, I'd expect them to be coming on the horizon...
  7. Small Basic 2.1+
    1. Once we had a combined release, I'd hope to see an emphasis on in-app tutorials, extensions (like Minecraft), and more!
    2. I'd love to see a more robust Graduate feature set (such as to export into JavaScript, as an option).
    3. We'd also drive toward mobile apps, built from the same repo!

That's the vision. There is no timeline, just a roadmap. The more we work together (with the community), the faster we get there.

And that brings us back to Small Basic Online 0.9. What are the feature gaps and bugs?

Small Basic Online 0.9 Release Notes

Head to Small Basic Online.

Features Built:

  1. A Web Version: This version is online and is built from JavaScript and the Monaco Editor, among other sources, to enable online consumption!
  2. Sample Code: When starting SBO, you get sample code to quickly get started! 
  3. Help Pane: The Help Pane on the right allows you to interactively navigate the reference documentation!
  4. Double Display: For the first time, the Graphics Window and Text Window can be seen simultaneously. It's very easy to find and close those windows.
  5. Strong Toolbar Parity: Although it's not full toolbar parity, this release includes New, Import, Publish, Cut, Copy, Paste, Undo, Redo, and Run.
  6. Link to SB Website: The logo in the upper right takes you to the Small Basic website and the Small Basic community!
  7. Confirmation Message: As expected, when you leave the SBOnline editor, it asks you if you're sure that you want to leave.

Known Issues:

  1. Online Gallery is Disconnected: It currently has an upload of the Gallery pages from July 2017 (so you can import programs from then and earlier). Any programs you publish will be only available in Small Basic Online 0.9. They won't be available in Small Basic Desktop, and they will be deleted from the SB Online gallery when we next update. So if you want your program to be more permanently online, you'll need to publish the code from SB Desktop.
  2. SBO doesn't display results on Apple computers. We're investigating these issues. Although the online editor opens and is fully functional, the results don't display in the Graphics Window and Text Window. Apple computers passed earlier tests, so we need to do some research to find out what happened, whether this is just for certain devices and versions, or a new Apple update might have made this change.
  3. Different keymapping
  4. AND/OR don’t work
  5. To detect keys one has to click on TextWindow
  6. No window title
  7. DrawText acts as shape, changing font changes all drawn font size
  8. Italic doesn’t work
  9. SB Desktop Parity: All the quotations must be closed
    1. Note that this might be kept in, as a bug fix over SB Desktop.
  10. Sometimes it pops up strange errors, starting again removes them

 

If you found more issues or think something built is worthy of including in the "Features Built" section, please reply below with a comment (or if you want to explain/clarify one of the above items better)! We'll update this page and eventually build a Small Basic Online 0.9 Release Notes page on TechNet Wiki.

Note: If you find parity issues and bugs in Small Basic Online 1.1 on GitHub, please file those as GitHub Issues.

 

Thank you for your patience as we work through our Small Basic Release Pipeline!

That's Small and Basically it,

- Ninja Ed

Mobile CI/CD 101

$
0
0

This is a guest post by Slava Chernikoff, Principal Engineer at Binwell.

Mobile DevOps falls under the umbrella of enterprise DevOps, since mobile applications are primarily a user interface for interacting with external IT systems. Mobile teams tend to have a much smaller scale, however, plus has its own unique challenges in multiple platforms and devices. You can find the high-level difference between mobile and enterprise applications in Figure 1.
 

 
Our focus in this blog is helping you setup a mobile CI/CD solution using Visual Studio App Center.

1. Mobile CI/CD Pipeline
Toolkits for building and publishing installation packages have been around for a long time. Typically, this is a set of scripts that is used on the build machine in the mobile development team. Figure 2 shows the general process of Mobile CI/CD. Recently however, cloud services have started to gain popularity for the implementation of CI/CD, which is where App Center comes into play.
 

1.1 Build Tools
You can run the CI/CD-pipeline either independently or via your enterprise collaboration tool command – in our case, Slack, or automatically for every push to the repository. With cloud CI/CD it is better to configure the automatic option, as this will shorten the way of receiving information about errors. Below are the necessary settings for the build pipeline in App Center (add the project in App Center, connect the code repository and configure Build for different branches - see Figure 3).
 

Manual mode is best left for more complex scenarios - for example, preparing a separate assembly for A/B testing, or running a wider set of functional tests before delivery to beta users.
 
In order to run test automation in App Center from your build configuration, you need to write bash-scripts for iOS/Android and put them in the project folder:
 

  • appcenter-post-clone.sh - starts right after the remote repository is cloned on the build-machine (mac for iOS/Android). You can run unit tests here:
  • appcenter-pre-build.sh - it is executed before the application build, here it is possible, for example, to write BUILD_ID in the application version (x.y.BUILD_ID);
  • appcenter-post-build.sh - starts immediately after the successful building of the application. At this step, you can run custom Smoke tests on real smartphones/tablets or advanced Acceptance or tests.

Since the building (including packaging and signing) of actual mobile applications takes quite a long time (more than 5-10 minutes), you can run unit-tests on post-clone or pre-build steps, this will allow quick diagnostics of key mechanisms. But Smoke testing, which is highly recommended in mobile development, should be done after the build. This will verify that the application, at least, will run on real smartphones with the required OS versions.

1.2 Cloud Build Machines
In order to build applications in the App Center, virtual Macs working on Apple hardware are used. These machines have a rich set of tools that you can also use in your bash scripts - see Figure 4.
 

For more details on App Center Cloud Build Machines: https://docs.microsoft.com/en-us/appcenter/build/software and then we'll take a look at the scripts themselves.

1.3 Custom Scripts for Build Steps
If you have not written shell scripts for bash, then you need to practice a little and read the documentation: bing.com/search?q=bash+for+beginners
In our example, we created an automatic CI/CD pipeline for the master branch in the repository on GitHub: https://github.com/SlavaChernikoff/DevOpsXF.

As you can see in Figure 5, App Center automatically found our scripts that were added to the project folder (where the .xcodeproj, build.gradle, .csproj, .sln or package.json files are located).

When writing scripts, it may be necessary to use bash environment variables - an external script or the program writes its variable to the bash session, for example APPCENTER_SOURCE_DIRECTORY and this allows to use the value of this variable in your scripts. Key pre-defined environment variables in App Center:
 

 

Read more: docs.microsoft.com/en-us/appcenter/build/custom/variables You can also configure your environment variables in the build parameters (see Figure 7).

In your scripts, you can use the variables $MAJOR_VERSION and $MINOR_VERSION, as shown in the example for appcenter-pre-build.sh. In your scripts you can also modify your application source code with regular expressions and shell tools/commands.
 
Now let's look at each script separately. We'll start with the post-clone step, which will start Unit-tests. All examples are provided for Xamarin based Android project.
 
appcenter-post-clone.sh


 


 
As you can see, the script searches for folders with .csproj-files (Visual Studio projects), the name of which contains UnitTests and runs unit-tests based on NUnit or MSTest. In our example, unit-tests are implemented on with .NET Core and MSTest. You can use any familiar tools for unit-testing, depending on the framework which you will use to develop application.

appcenter-pre-build.sh
 

 
In this step, you can add BUILD_ID to the version of the application in the format MAJOR_VERSION.MINOR_VERSION.BUILD_ID. We can also perform any additional actions here before the build.

appcenter-post-build.sh
 


 

If the build has reached this step, then you have APK/IPA installation package. For many teams, the CI/CD pipeline was interrupted at this step, as it was required to check on actual devices, and on-premise device farms for UI-tests was a luxury. The provided script uses the App Center Test Cloud for automatic custom Smoke tests (based on Xamarin.UITest) to run the application. More details about automatic testing will be covered in the next article.

2. Automatic Testing as Part of Mobile CI/CD
As we mentioned earlier, mobile development has 3 distinct problem areas:
• Different screen resolutions of devices. Regardless of the number of pixels or aspect ratio, the application interface should be correctly displayed on all devices.
• Different operation systems and their versions. The application should work correctly on a wide range of operation systems, each of them has its own features and limitations.
• Different CPU architectures. The smartphones and tablets themselves are constantly improving, but we should not forget about the older devices produced five years ago, which can still be in use by the actual users.
 
However, part of the code can be easily covered by automatic tests based on Unit Testing tools. Let's look at the typical architecture of mobile application - Figure 8.
 

 

Full tests coverage is more reasonable to carry out in 2 directions:
• unit-tests (functional, integration) for a Data Access Layer (or Repositories).
• UI-tests (functional, regression) for Business Logic and User Interface layers.
Covering all layers of mobile application with Unit Tests is not possible, and it also reduces the speed of development. More details on automatic testing, will be covered in future article, now it’s important to say that the automatic CI/CD pipeline can include Unit and UI tests with App Center Test.

Conclusion
The mobile CI/CD approach allows you to simplify and accelerate the process of creating a quality product. Cloud Mobile CI/CD pipeline based on App Center allows to “configure-and-forget” environment for build, test and distribute. In this article we explained mobile development pitfalls and how to avoid them with automation.
In my next post, I’ll focus on automatic testing (Unit and UI): Stay tuned!

About the author
Slava Chernikoff is Principal Engineer at Binwell, and is a Microsoft MVP and Xamarin Certified Developer. He is an experienced mobile cross-platform and native developer, an author of popular articles and guides about Mobile DevOps and Xamarin, and a regular conference speaker. He was previously was honored as Nokia Champion and Qt Certified Developer and is a Microsoft MVP and Xamarin Certified Developer.

Get Started for Free

Tuesday Featured Post: Finding Solutions To Your Programming Problems

$
0
0

Good Day All!

We are back with the Tuesday’s Featured Post where we discuss a Forum Post or a Forum Thread from the MSDN or TechNet Forums and then highlight the value that they added.

In online community forums we can find various types of questions and answers form which we can learn many thing such as programming best practices, alternative solutions, how to highlight or present the issue to the community etc. So, for this week pick for the featured post I have selected Check if an application running already asked by Markos_King from .NET Framework Forum. In this post Original Poster is like to know that the solution OP is decided to use for checking if an application or process is already running or not, are there any alternative better and faster approach is available or not.

This forum post is a good example of finding solution of programming problems in online community forums. If you look closely, the OP of this thread provided necessary information, to be specific the code snippet (one of the main requirement to understand code related issue) about how the existing solution is implemented and asking about any alternative and faster approach is available.

In this thread, we can see that everyone who answered the question they answered it gracefully with example and detail explanation. This can tell by the helpful post count marked in the answers. Answerer's in this thread shares knowledge's about the better approach of handling the exception in try/catch block in the code that OP posted and explained what issue will raise in the OP's approach. Also OP points out some of the exception getting in his/her approach, which is an example of finding solution of programming problems in online community forums. Community forums is an important source that people use to find answers to questions. When people use forum for answers, the returned threads can be of very low quality in terms of providing informative answers. Some threads are either long conversations without any final conclusive answers or contain answers that do not work.

I hope that this post helps and see you on the next one.

Thank You,

-Ninja Sabah

Build and Release failures when using BitBucket and OAuth in all regions. – 08/28 – Mitigated

$
0
0

Final Update: Tuesday, August 28th 2018 18:53 UTC
Please note: although we believe that the incident has been mitigated on our end, you may continue to see errors on bitbucket that may cause your builds to fail. We are escalating this to bitbucket and will work closely with them to make sure any outstanding issues are addressed in a timely manner.

Sincerely,
Kishore Jalleda


Update: Tuesday, August 28th 2018 18:41 UTC

We believe that the incident has been mitigated. The root cause is not fully understood yet, but, we continue to dig into it with high priority.

Sincerely,
Kishore Jalleda


Update: Tuesday, August 28th 2018 17:23 UTC

We are in the process of rolling out a fix to mitigate the issue. We expect things to improve soon.

  • Next Update: Before Tuesday, August 28th 2018 18:30 UTC

Sincerely,
Kishore Jalleda


Initial notification: Tuesday, August 28th 2018 16:33 UTC

We're investigating Build and Release failures when using BitBucket and OAuth.

Customers might be experiencing build and release failures when using BitBucket and OAuth.

  • Next Update: Before Tuesday, August 28th 2018 17:45 UTC

Sincerely,
Ariel Jacob


EWS calls for dealing with people

$
0
0

One area of development has to do with finding and dealing with information about people. EWS provides calls in different areas to cover this area well. Below I've assembled links and some information to help with development in this area. I'm keeping the content lean and its intent is to show you areas to look into when researching for your application.

Primer:

People and contacts in EWS in Exchange
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/people-and-contacts-in-ews-in-exchange

Search GAL:

You can search the Global Address List (GAL).

FindPeople operation
https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/findpeople-operation

Using the EWS FindPeople operation in Exchange 2013 and Exchange Online (2013)
https://gsexdev.blogspot.com/2013/05/using-ews-findpeople-operation-in.html

Resolving names/addresses:

EWS can resolve a person's name or email address to get to verify they are valid and get to their basic mailbox information (such as the SMPT address).

Resolve ambiguous names by using EWS in Exchange 2013
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-resolve-ambiguous-names-by-using-ews-in-exchange-2013

Contacts:

A contacts folder can be searched for contacts and contact lists:

Retrieve Contacts from the Contacts Folder by using the EWS Managed API 2.0
https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/jj220498%28v%3dexchg.80%29

Users Photos:

EWS can retrieve a user's photo, however you will need PowerShell to set it for Exchange versions prior to 2016. Remote PowerShell calls cane used to call Set-UserPhoto to set it for prior versions.

Get user photos by using EWS in Exchange
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-get-user-photos-by-using-ews-in-exchange

Calling Exchange Management Shell Cmdlets from Managed Code
https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/ff326159(v=exchg.140)#code-snippet-1

3.1.4.8 SetUserPhoto
https://msdn.microsoft.com/en-us/library/mt552422(v=exchg.80).aspx

Set-UserPhoto via EWS
https://social.msdn.microsoft.com/Forums/office/en-US/2e567ebe-c688-4d06-ae16-58f84f5f8ef0/setuserphoto-via-ews?forum=exchangesvrdevelopment

Contact Photos:

EWS can read and set pictures on contacts:

Get user photos by using EWS in Exchange
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-get-user-photos-by-using-ews-in-exchange

Retrieve Contacts from the Contacts Folder by using the EWS Managed API 2.0
https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/jj220498(v%3Dexchg.80)

Using Contact photo's in EWS in Exchange 2010
https://gsexdev.blogspot.com/2009/12/using-contact-photo-in-ews-in-exchange.html

Meeting Rooms:

EWS can get a list of defined meeting rooms and use that list in secondary operations to get information on meeting rooms.

GetRooms operation
https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getrooms-operation

Working with rooms in the EWS Managed API 2.0
https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/hh532568(v%3dexchg.80)

Get room lists by using EWS in Exchange
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-get-room-lists-by-using-ews-in-exchange

Getting a room by using the EWS Managed API 2.0
https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/hh532566(v%3Dexchg.80)

Distribution Groups:

EWS can break-down distribution groups. To configure distribution groups, you need to use Exchange PowerShell.

Distribution groups and EWS in Exchange
https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getrooms-operation

Get endpoint connectivity information with GetUserSettings:

EWS can retrieve connectivity information for a user by pulling it from the AutoDiscover service. The data available covers the endpoints and configuration data which applies to many protocols – not just EWS.

Get user settings from Exchange by using Autodiscover
https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-get-user-settings-from-exchange-by-using-autodiscover

 

 

Open source updates and more ahead

$
0
0

We've been making steady progress over the past few months migrating the Service Fabric source code and build to GitHub, while simultaneously continuing our normal development and release cadence. We'd like to share some of the progress we've made so far and what's coming next.

Complete Linux builds

We're excited to now have a .NET Core build process enabled on Linux. This is a big milestone in the transition to open source that has allowed us to push all of the C# components of Service Fabric to GitHub, with the ability to produce complete builds and run tests.

Although the core Service Fabric runtime does operate without any of the C# components, they provide important capabilities and a lot of the application-level functionality and APIs when developing .NET applications on Service Fabric.

We've also pushed the latest Service Fabric source - over 4,500 new files - to GitHub. In total this includes:

  • Reliable Collections, at nearly a quarter-million lines of C#, this includes the source for the entire Reliable Collections library and storage engine.
  • Kernel Template Library, or KTL, a homebrew kernel STL library that can run in either kernel mode or user mode. Service Fabric uses this library extensively for core kernel-mode components, including the Reliable Collections transactional log.
  • Runtime and client libraries, targeting .NET Standard 2.0, these are the C# APIs you use when writing Reliable Services applications in C#.
  • System services, including the Fault Analysis Service for chaos testing and fault injection, and the Container Activator Service, which is responsible for activating and managing containers on Service Fabric, are both written in C# and have now been pushed to the Service Fabric repo.
  • Tests. Lots more tests - 343 to be exact - that can be run in a container using a simple script.

Putting this all together, we can now produce complete Service Fabric builds for Linux from GitHub with a growing test suite.

Windows builds and more ahead

Our primary goal continues to be an overhaul of our build process on Windows using only publicly-available tools, which will allow anyone to produce Service Fabric builds for Windows as well as Linux from GitHub. Complete test infrastructure and a CI environment are also on the horizon, as we continue to work toward a full open development model on GitHub.

In the meantime, we're putting together a container image that has a complete Windows build environment using some of the custom build tools we currently use, which we will add to the Service Fabric repo. That will help get an early start on producing builds of Service Fabric for Windows from GitHub as we continue to make progress on a unified build environment for both Windows and Linux. This is the first major milestone to building Service Fabric for Windows from GitHub with more in the works. Stay tuned!

Strongly typed date and time fields for SAP connector, and NUMC fields

$
0
0

These types have been a source of headache for users of BizTalk Server SAP Adapter as demonstrated by the amount of blog posting, forum questions and the existence of the SAP adapter binding connection parameter "EnableSafeTyping" and the further complication of a fine grain 12-toggles DataTypeBehavior binding connection parameter. Refer to posts from last decade:

https://blogs.msdn.microsoft.com/adapters/2007/11/24/the-enablesafetyping-binding-property/
https://blogs.msdn.microsoft.com/adapters/2008/08/13/the-datatypesbehavior-binding-property-in-the-sap-adapter/

As we are working on the new SAP connector (demo'ed in recent public conferences) with trigger and in particular schema generation for public preview for Logic App, we have taken the time to reflect onto the handling of these fields, as they affect the generated schemas.

You will notice that past messages that used to work with the current public preview SAP application and message server connectors, like this:

<BAPI_REQUISITION_CREATE xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <AUTOMATIC_SOURCE>A</AUTOMATIC_SOURCE>
  <SKIP_ITEMS_WITH_ERROR>S</SKIP_ITEMS_WITH_ERROR>
  <REQUISITION_ITEMS>
    <BAPIEBANC xmlns="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/">
    <DOC_TYPE>NB</DOC_TYPE>
    <PUR_GROUP>003</PUR_GROUP>
    <MATERIAL>500-120</MATERIAL>
    <PLANT>1100</PLANT>
    <STORE_LOC>0001</STORE_LOC>
    <QUANTITY>10.00</QUANTITY>
    <DELIV_DATE>20060915</DELIV_DATE>
  </BAPIEBANC>
  </REQUISITION_ITEMS>
</BAPI_REQUISITION_CREATE>

Will, like BizTalk Server's default behavior, fail on send with this:

The string '20060915' is not a valid AllXsd value.

In the larger error exception:

Microsoft.ServiceModel.Channels.Exception.XmlReaderParsingException: An error occurred when trying to convert the XML string 20060915 of RFCTYPE RFCTYPE_DATE with length 8 and decimals 0 to a .NET type. Parameter/field name: DELIV_DATE Error message: The string '20060915' is not a valid AllXsd value.. ---> System.FormatException: The string '20060915' is not a valid AllXsd value.

You need to change the value to '2006-09-15'.

Why? Because 20060915 is not in the date type format of XML fields. See reference w3c documentation on XML data types for date at https://www.w3schools.com/XML/schema_dtypes_date.asp

Similarly in the response from SAP, you might have expected

      <DELIV_DATE>20060915</DELIV_DATE>
      <REL_DATE>00000000</REL_DATE>

These are now changing to strongly typed compliant values:

      <DELIV_DATE>2006-09-15T00:00:00</DELIV_DATE>
      <REL_DATE>0001-01-01</REL_DATE>

Rather than have users need to fine-grain control 13 parameters, we are working on a sensible out of the box behavior which will be strong typed, XML compliant and supporting the null, min and max SAP values.

The fields of SAP type NUMC will be always kept in their native string type, and there will not be logic to force them into an integer type. This because the described intend of the NUMC data type in SAP is to hold account numbers, zip codes, social security numbers, phone numbers and the like, which both do not make sense to handle as integer, neither can the integer type ensure to retain potential distinguishing and required elements such as heading zeros (0) or dash (-) delimiters.
If you have made use of a mix of the date-as-string and NUMC-as-integer BizTalk behaviors, do plan accordingly to add small XML-adjusting actions before and after the new SAP connector Send Message action, such that you convert SAP-style date and time values to XML compliant ones, as well as convert SAP NUMC strings to the integer format you expect. We are also working on providing an advanced connection parameter to keep the popular BizTalk EnableSafeTyping behavior (but not the 12 fine grained data type conversion controls).

Cumulative Update #13 for SQL Server 2014 SP2

$
0
0

The 13th cumulative update release for SQL Server 2014 SP2 is now available for download at the Microsoft Downloads site. Please note that registration is no longer required to download Cumulative updates.
To learn more about the release or servicing model, please visit:

Cumulative Update #10 for SQL Server 2017 RTM

$
0
0

The 10th cumulative update release for SQL Server 2017 RTM is now available for download at the Microsoft Downloads site. Please note that registration is no longer required to download Cumulative updates.
To learn more about the release or servicing model, please visit:

Starting with SQL Server 2017, we are adopting a new modern servicing model. Please refer to our blog for more details on Modern Servicing Model for SQL Server

Lync/Skype for Business の更新プログラム(CU) 一覧

$
0
0

こんにちは。 Japan Lync Support Team です。

公開技術情報 (Knowledge Base)
TITLE: How to obtain the latest update for Skype for Business 2016
URL: https://support.microsoft.com/en-us/help/3123065

TITLE: How to obtain the latest update for Skype for Business 2015 (Lync 2013)
URL: https://support.microsoft.com/en-us/help/2998606

1. Skype for Business Server 2015

Version KB Date
6.0.9319.516 3061064 2018/03/16
6.0.9319.510 3061064 2017/12/14
6.0.9319.281 4012620 2017/05/17※代表して core components への Link を記載しています。
6.0.9319.277 3061064 2017/02/13
6.0.9319.272 3061064 2016/11/04
6.0.9319.259 3149226 2016/06/30
6.0.9319.235 3061064 2016/03/18
6.0.9319.102 - 2015/11/17
6.0.9319.55 - 2015/06/19

 

2. Skype for Business 2016

Version KB Date
16.0.4732.1000 4032255 2018/08/07
16.0.4717.1000 4022221 2018/07/10
16.0.4705.1000 4022155 2018/06/06
16.0.4690.1000 4018367 2018/05/02
16.0.4678.1000 4018323 2018/04/04
16.0.4666.1000 4011725 2018/03/06
16.0.4654.1000 4011662 2018/02/06
16.0.4639.1000 4011623 2018/01/02
16.0.4627.1000 4011563 2017/12/05
16.0.4615.1000 4011238 2017/11/07
16.0.4600.1000 4011159 2017/10/10
16.0.4588.1000 4011040 2017/09/12
16.0.4561.1000 3213548 2017/07/05
16.0.4546.1000 3203382 2017/06/13
16.0.4534.1000 3178717 2017/05/09
16.0.4522.1000 3178717 2017/04/04
16.0.4510.1000 3178656 2017/03/14
16.0.4498.1000 3141501 2017/02/07
16.0.4471.1000 3127980 2016/12/06
16.0.4432.1000 3118288 2016/09/06
16.0.4405.1000 3115268 2016/07/05
16.0.4393.1000 3115087 2016/06/07
16.0.4339.1000 3114846 2016/03/08
16.0.4351.1000 3114696 2016/02/09
16.0.4324.1000 3114516 2016/01/12
16.0.4312.1000 3114372 2015/12/08
16.0.4300.1001 3085634 2015/11/10
16.0.4288.1000 2910994 2015/09/30

 

注.1 : Skype for Business 2016 は、C2R 版と MSI 版でバージョンが異なります。
Skype for Business 2016 MSI 版は Office 2016 Volume License の一部であり同じビルド番号のバージョンです。
一方で C2R 版は Office 365/Office 2016 ProPlus の一部であり同じビルド番号になります。
本ブログでは、MSI 版のバージョンを記載しておりますので、C2R 版のチャネルやバージョンについては以下のサイトをご参考ください。

TITEL: Office 365 クライアント更新プログラムのチャネル リリース
URL: https://technet.microsoft.com/ja-jp/office/mt465751.aspx

TITEL: Office 365 ProPlus 更新プログラム チャネルの概要
URL: https://support.office.com/ja-jp/article/Office-365-ProPlus-%E6%9B%B4%E6%96%B0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0-%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%AE%E6%A6%82%E8%A6%81-9ccf0f13-28ff-4975-9bd2-7e4ea2fefef4?ui=ja-JP&rs=ja-JP&ad=JP

TITEL: 更新プログラム チャネル リリースのバージョン番号とビルド番号
URL: https://support.office.com/ja-jp/article/更新プログラム-チャネル-リリースのバージョン番号とビルド番号-ae942449-1fca-4484-898b-a933ea23def7?ui=ja-JP&rs=ja-JP&ad=JP

注.2 : Skype for Business 2016 は、ヘルプに適切なバージョン番号を示しません。
クライアントのメニューより、[ヘルプ] > [Skype for Business について(A)] を選択すると、以下の様にバージョンが表示されます。

適用された更新プログラムのバージョンを適切に示さない場合があるため、正確なバージョンをご確認いただくためには以下公開情報をご参照ください。

TITLE : How to check the version of Skype for Business 2016
URL : https://support.microsoft.com/en-us/help/3195481/how-to-check-the-version-of-skype-for-business-2016

また、PowerShell から以下コマンドを実行いただくことでも、ご確認いただくことが可能です。

(Get-ItemProperty -path "HKLM:SoftwareMicrosoftWindowsCurrentVersionApp Pathslync.exe")."(Default)" | ForEach-Object {Get-ChildItem -Path $_ | Select-Object -ExpandProperty VersionInfo | Select FileDescription,ProductVersion}| ft -autosize

3. Lync Server 2013

※公開サイトでダウンロード可能なバージョンは最新版のみです。ただしセキュリティパッチ(Sec)の場合、ひとつ前のパッチが公開されている場合もございます。

Version KB Date
5.0.8308.1001 4295703 2018/07/10
5.0.8308.992 2809243 2017/07/11
5.0.8308.987 4014154 2017/03/22
5.0.8308.984 3210166 2017/01/18
5.0.8308.974 3200079 2016/11/01
5.0.8308.965 2809243 2016/08/23
5.0.8308.956 3140581 2016/04/02
5.0.8308.945 31266373126638 2016/01/07
5.0.8308.941 312121331212153120728 2015/12/15
5.0.8308.887 3051951 2015/05/01
5.0.8308.871 3131061 2015/03/19
5.0.8308.857 3018232 2014/12/12
5.0.8308.815 2937305 2014/09/23
5.0.8308.803 2986072 2014/09/08
5.0.8308.738 2937310 2014/08/05
5.0.8308.577 2905048 2014/01/08
5.0.8308.556 2881684 2013/10/07
5.0.8308.420 2819565 2013/07/01
5.0.8308.291 2781547 2013/02/27

 

4. Lync 2013 クライアント(Skype for Business)

Basic や VDI プラグインも同じバージョンが適用可能です。

Version KB Date
15.0.5059.1000 4032250 2018/08/07
15.0.5049.1000 4022225 2018/07/10
15.0.5041.1000 4022170 2018/06/06
15.0.5031.1000 4018377 2018/05/01
15.0.5023.1000 4018334 2018/04/03
15.0.5015.1000 4018290 2018/03/06
15.0.5007.1000 4011678 2018/02/06
15.0.4997.1000 4011638 2018/01/02
15.0.4989.1000 4011255 2017/11/07
15.0.4971.1000 4011179 2017/10/10
15.0.4963.1000 4011107 2017/09/12
15.0.4953.1000 4011046 2017/08/01
15.0.4945.1000 3213574 2017/07/05
15.0.4937.1000 (Lynchelploc) 3191937 2017/06/13
15.0.4937.1000 3191939 2017/06/13
15.0.4927.1000 (Lynchelploc) 3191873 2017/05/02
15.0.4927.1000 3191876 2017/05/02
15.0.4919.1000 (Lynchelploc) 3172492 2017/04/04
15.0.4919.1000 3178731 2017/04/04
15.0.4911.1000 3172539 2017/03/15
15.0.4903.1001 3161988 2017/02/07
15.0.4893.1000 3141468 2017/01/03
15.0.4885.1000 3127976 2016/12/06
15.0.4875.1001 3127934 2016/11/01
15.0.4867.1000 3118348 2016/10/11
15.0.4859.1002 3118281 2016/09/06
15.0.4849.1000 3115431 2016/08/09
15.0.4841.1000 3115261 2016/07/05
15.0.4833.1000 3115033 2016/06/07
15.0.4809.1000 3114944 2016/04/12
15.0.4797.1000 3114732 2016/02/09
15.0.4787.1001 3114502 2016/01/07
15.0.4779.1001 3114351 2015/12/08
15.0.4771.1001 3101496 2015/11/10
15.0.4763.1001 3085581 2015/10/13
15.0.4753.1000 3085500 2015/09/08
15.0.4745.1000 3055014 2015/08/14
15.0.4727.1001 3054791 2015/06/09
15.0.4719.1000 3039779 2015/05/12
15.0.4711.1002 2889923 2015/04/14
15.0.4701.1000 2956174 2015/03/10
15.0.4693.1000 2920744 2015/02/10
15.0.4659.1001 2889929 2014/10/29
15.0.4649.1000 2889860 2014/09/09
15.0.4641.1000 2881070 2014/08/12
15.0.4623.1000 2850074 2014/06/10
15.0.4615.1001 2880980 2014/05/13
15.0.4605.1003 2880474 2014/04/11
15.0.4569.1508 2863908 2014/03/11
15.0.4551.1001 2817678 2013/11/12
15.0.4551.1005 2825630 2013/11/07
15.0.4517.1504 2817621 2013/08/13
15.0.4517.1004 2817465 2013/07/09
15.0.4517.1001 2768354 2013/06/11
15.0.4481.1004 2768004 2013/05/20
15.0.4481.1000 2760556 2013/03/20
15.0.4454.1509 2812461 2013/02/27

 

5. Lync Server 2010

Version KB Date
4.0.7577.728 2493736 2016/05/13
4.0.7577.726 2493736 2016/04/18
4.0.7577.713 3057803 2015/05/01
4.0.7577.710 3030726 2015/02/06
4.0.7577.230 2957044 2014/04/24
4.0.7577.225 2909888 2014/01/08
4.0.7577.223 2889610 2013/10/07
4.0.7577.217 2860700 2013/07/12
4.0.7577.216 2791381 2013/03/15
4.0.7577.211 2791665 2013/01/29
4.0.7577.206 2772405 2012/11/06
4.0.7577.203 2737915 2012/10/11
4.0.7577.199 2701585 2012/06/16
4.0.7577.198 2698370 2012/04/20
4.0.7577.197 2689846 2012/03/29
4.0.7577.190 2670352 2012/03/01
4.0.7577.189 2670430 2012/02/07
4.0.7577.188 2658818 2012/01/23
4.0.7577.183 2650982 2011/12/13
4.0.7577.183 2514980 2011/11/19
4.0.7577.170 2616433 2011/09/13
4.0.7577.167 2592292 2011/08/29
4.0.7577.166 2571546 2011/07/25
4.0.7577.137 2500442 2011/04/20

 

6. Lync 2010 クライアント

Version KB Date
4.0.7577.4540 4025865 2017/09/12
4.0.7577.4534 4020732 2017/06/13
4.0.7577.4525 4010299 2017/03/15
4.0.7577.4521 3188397 2016/10/12
4.0.7577.4510 3174301 2016/08/05
4.0.7577.4484 3096735 2015/11/10
4.0.7577.4478 3081087 2015/ 9/ 8
4.0.7577.4476 3075593 2015/ 8/11
4.0.7577.4474 3072611 2015/ 7/ 7
4.0.7577.4456 3006209 2014/11/11
4.0.7577.4446 2953593 2014/ 6/10
4.0.7577.4445 2953593 2014/ 4/17
4.0.7577.4419 2912208 2014/ 1/8
4.0.7577.4409 2884632 2013/10/7
4.0.7577.4398 2842627 2013/ 7/12
4.0.7577.4392 2843160 2013/ 7/9
4.0.7577.4388 2827750 2013/ 5/14
4.0.7577.4384 2815347 2013/ 4/9
4.0.7577.4378 2791382 2013/ 3/14
4.0.7577.4374 2793351 2013/ 1/29
4.0.7577.4356 2737155 2012/10/11
4.0.7577.4109 2726382 2012/10/9
4.0.7577.4103 2701664 2012/ 6/16
4.0.7577.4098 2693282 2012/ 6/12
4.0.7577.4097 2710584 2012/ 5/14
4.0.7577.4087 2684739 2012/ 3/28
4.0.7577.4072 2670326 2012/ 3/1
4.0.7577.4063 2669896 2012/ 2/7
4.0.7577.4061 2670498 2012/ 1/28
4.0.7577.4053 2647415 2011/11/21
4.0.7577.4051 2514982 2011/11/19
4.0.7577.336 2630294 2011/10/19
4.0.7577.330 2624907 2011/10/11
4.0.7577.314 2571543 2011/ 7/25
4.0.7577.280 2551268 2011/ 5/24
4.0.7577.275 2540951 2011/ 4/27
4.0.7577.253 2496325 2011/ 4/4
4.0.7577.108 2467763 2010/ 1/20

こちらも併せてご活用ください。
https://technet.microsoft.com/en-us/office/dn788954.aspx

免責事項:
本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

 

Microsoft Office 365 Service Communications API を使用した Dynamics 365 Customer Engagement サービス監視:サービス正常性の取得

$
0
0

みなさん、こんにちは。

前回は、Office 365 からサービス正常性を取得するための事前準備をしました。

まだご覧になっていない方は一読ください。

Microsoft Office 365 Service Communications API を使用した Dynamics 365 Customer Engagement サービス監視: 概要
Microsoft Office 365 Service Communications API を使用した Dynamics 365 Customer Engagement サービス監視: 事前準備

今回は、実際に Dynamics 365 CE サービス正常性を取得してみます。Office 365 の管理センターの内容と比較しながら見ていきます。

- 有効なサービスを取得
- 現在の状態を取得
- インシデントの詳細を取得
- 過去の状態を取得

有効なサービスを取得

Office 365 テナントで有効になっているサービスを取得してみます。最初に Office 365 管理センターで確認します。

[Office 管理センター] > [正常性] > [サービス正常性] をクリックします。

image

この評価環境の場合、17 個の有効なサービスがあることがわかります。

[Office 365 Service Communications API]

続いてAPI で取得してみます。クライアントに Postman をインストールしてください。

1. Postman を起動します。

2. “Request” をクリックします。

image

3. 名前を付けます。

image

4. Collection を作成し、指定します。

image

5. 作成されます

image

6. 続いて。右ペインに以下の URL を入力します。

https://manage.office.com/api/v1.0/<テナント名>.com/ServiceComms/Services

image

7. 認証タイプを “OAuth 2.0” に指定します。

image

8. [Get New Access Token] をクリックします。

image

9. 以下の通り設定します。

Client ID、Client Secret は事前準備で取得したものを指定します。

image

10. ボタンをクリックします。

image

11. Office 365 へのログイン画面が表示されます。Office 365 管理者でログインします。

12. ログインに成功すると、Access Token に文字列が記載されればOKです。
トークンは一定期間利用できるます。以後本記事で出てくる操作は、同じトークンを利用できます。

image

13. 下にスクロールしてボタンをクリックします。

image

14. Header に “Authorization” が追加されていることを確認します。

image

15. Send ボタンをクリックします。

16. HTTP ステータス 200 で、Body に何かしら返却されていれば OK です。

image

17. 構造を見てみましょう。青枠 (4-29 行目) は Dynamics 365 CE だとわかります。
また同様に各サービスの結果が返ってきており 17 個あることがわかります。

image

18. 続いて、Dynamics 365 CE のみにみ絞ってみます。フィルターを付けます。

image

19. [Send] をクリックします。Dynamics 365 CE のみにフィルターされたことがわかります。

image

Dynamics 365 CE で取得できる項目

Dynamics 365 CE のサービスで API で確認できることは 5つあるようです。

- Sign In
- Sign up and administrator
- Organization access
- Organization performance
- Components/Feature

現在この項目の詳細について公開情報は見つけられていませんが、名前から推測すると Dynamics 365 CE にサインできるか、Dynamics 365 CE の組織にアクセスできるか、パフォーマンスの状態、機能やコンポートの状態などがわかるようです。API がプレビューという位置づけですが、この情報は API で確認できる有用な情報です。

現在の状態

続いて、Dynamics 365 CE の現在の状態を取得してみます。

1. URL に “CurremtStatus” とフィルターを付けて [Send] をクリックします。

image

2. Dynamics 365 サービスの現在の正常性がわかります。

image

1 つ目の赤枠は、項目ごとの状態がどうなっているかわかります。”Components/Feature” が “ServiceRestored” になっており、サービスが復元した状態であることがわかります。

2 つ目の赤枠は、インシデントの番号が確認できます。後ほどインシデントの詳細を取得してみます。

3 つ目の赤枠は、サービス全体の状態がわかります。“ServiceRestored” になっているためサービスが服された状態だとわかります。
また、Statustime は取得した時間のようです。日にちが一日ずれていますが日本時間にすると時間は合います(UTC+9)。

インシデントの詳細を取得

では続いて、インシデントの詳細を取得てみましょう。

1. URL に “Message” とフィルターを付けて [Send] をクリックします。

image

2. “CR146892” インシデントの詳細が取得できました。

Title、ImpactDescription より SharePoint Online との連携で問題が発生していたことが読み取れます。

開始時間は 8/20 14:01、終了時間は 8/27 17:5、更新日時が 8/28 7:34 ということがわかります。

Messages 部分は、過去の履歴を意味しているようです。最初のメッセージは 8/21 19;40 から始まり、8/27 20:15 が最後のようです。

image

Office 365  管理センターを見てみましょう。

3. [Office 365 管理センター] > [正常性] > [サービス正常性] > [履歴の表示] をクリックします。

image

4. “CR146892” をクリックします。開始時間、終了時間、更新日時、最終メッセージが API と同じものであることがわかります。

image

また、メッセージの履歴も確認できます。最初と最後のメッセージの日時が一致していることがわかります。

image

image

過去の履歴の取得

最後に、過去のサービスの正常性の履歴を取得してみます。

1. URL に入力します。

https://manage.office.com/api/v1.0/<テナント名>.com/ServiceComms/HistoricalStatus?$filter=Workload%20eq%20'DynamicsCRM'

image

2. [Send] をクリックします。結果を見ると、日次で 0:00 時点のサービスの正常性の状態を保持していることがわかります。
8/22-8/28 の 7 日分の履歴が返ってきました。

image

確認すると、履歴の一番古い 8/22 時点ですでに “CR146892” は発生したことがわかります。

image

そして、8/27 まで続けていましたが、8/28 ではインシデントはなくなり StatusDisplayName も “Normal Service” になっているため解消されたと判断できます。

image

Office 365 管理センターで確認すると、8/28 現在Dynamics 365 CE の状態は正常であることがわかります。

image

履歴の表示をクリックします。

image

“CR146892” は確認でき、8/20 14:1 が開始日時となっていることから、8/20 から発生したと判断できます。

image

まとめ

いかがだったでしょうか。今回は Dynamics 365 CE のサービス正常性を取得してみました。
現在の状態、インシデントの詳細、過去の履歴を取得できることがわかりました。またサインインできるか、組織のパフォーマンスの状態といった有用な情報も API で取得できることがわかりました。
次回は、今後のメンテナンス情報などのメッセージセンターの情報を取得してみます。お楽しみ。

- プレミアフィールドエンジニアリング 河野 高也

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります


Weltweite Auszeichnung der Microsoft Innovative Educator Experts

$
0
0

Wir von Microsoft sind jeden Tag begeistert von den innovativen Projekten und Unterrichtsideen engagierter Lehrkräfte. Denn Technologien alleine reichen nicht aus, um das Lernen zu verbessern und Schülerinnen und Schüler effektiv auf die Herausforderungen des Arbeitsmarktes vorzubereiten. Nur inspirierende Pädagoginnen und Pädagogen können dies. Unser Ziel ist es, diese Lehrkräfte dabei zu unterstützen, sich mit Gleichgesinnten zu vernetzen, Ideen auszutauschen, sich fortzubilden und die Ergebnisse daraus in den Unterricht einfließen zu lassen.

Auch dieses Jahr nominierten sich zahlreiche digital begeisterte Lehrerinnen und Lehrer für das Programm Microsoft Innovative Educator Experts (MIE Experts). Heute freuen wir uns, die ausgezeichneten MIE Experts für das Jahr 2018/2019 offiziell bekanntzugeben!

Das sind die MIE Experts 2018/2019 aus Deutschland

Wir gratulieren folgenden Lehrkräften herzlich zur Auszeichnung als MIE Expert 2018/2019:

  • Florian Nigl
  • Torsten Traub
  • Julian Wagner
  • Alexander Wachtel
  • Jens Palkowitsch-Kühl
  • André Diekow
  • Nikolas A. Rathert
  • Martin Scheider
  • Masimo Dietzel
  • Stefan Malter
  • Ferdinand Stipberger
  • Christine Glunz
  • Jan-Martin Klinge
  • Bernd W. Mueller
  • Miriam Gronert
  • Felix Müller
  • Michael Jeschke
  • Sarah Felsmann
  • Victor González

Ein weltweite Initiative für die digitale Bildung

Das Microsoft Innovative Educator (MIE)-Programm besteht aus mehr als 350.000 Pädagoginnen und Pädagogen weltweit, die der Microsoft Educator Community beigetreten sind und erfolgreich Online-Kurse zur beruflichen Entwicklung abgeschlossen, Unterrichtspläne beigesteuert und Kontakte zu anderen Lehrkräften auf der ganzen Welt geknüpft haben. In diesem Jahr begrüßen wir international mehr als 8.800 Pädagoginnen und Pädagogen, die aufgrund ihres herausragenden Engagements als Microsoft Innovative Education Experts ausgewählt worden sind. Zudem 180 MIE Experts auch als Skype-Master-Lehrer ausgewählt.

Die Nominierung ist das ganze Jahr über möglich

Interessierte, die ebenfalls Teil des Programms werden möchten, können sich das ganze Jahr über selbst nominieren. Registrieren Sie sich kostenlos in der Microsoft-Lehrer-Community und folgen Sie dort der Nominierungsanleitung!

Übrigens: In der Lehrer Community finden Sie eine Vielzahl von Online-Kursen, Tutorials und Unterrichtsideen von Lehrkräften aus aller Welt. Verabreden Sie sich mit einer Klasse aus Afrika zu einer gemeinsamen Skype-Unterrichtsstunde oder nehmen Sie an spannenden Webinaren teil!

Kubernetes plugin pro Visual Studio Code včetně Intellisense

$
0
0

Pro automatické nasazování a debugging v Kubernetes clusteru můžete využit extension pro open sourcové Visual Studio Code.

Plugin naleznete přímo v katalogu a instalace je záležitostí několika vteřin.

Plugin se pak podívá do vašeho konfiguračního souboru pro kubectl a hned bude fungovat.

Můžeme se podívat na namespace a přepínat se mezi nimi (a nepotřebujeme ani vytvářet kontexty).

Takhle se třeba podíváme na Nody a co na nich běží. Přes pravé tlačítko se dostaneme k dalším možnostem.

Tak například Desribe jednoduše vyvolá příkaz kubectl describe ve vašem okně, takže se s ním nemusíte vypisovat (zejména ladit správná jména a tak).

Pokud se třeba podíváme na Pody a dvakrát ťukneme na nějaký z nich, otevře se nám v okně ve formě YAML souboru (tohle mám strašně rád).

Podívejte se co všechno vám nabízí pravé tlačítko.

Můžete Pod vymazat a nebo třeba vypsat či streamovat jeho logy. To plugin udělá zase v okně příkazové řádky, takže formát výstupu vám bude důvěrně známý.

Můžete jednoduše zahájit port forwarding nebo skočit do terminálu přímo v Podu. Použije se kubectl exec, ale to zase nemusíte řešit a vypisovat – vám se jednoduše otevře terminálové okno a jste přímo uvnitř Podu.

Všimněte si ještě jedné zásadní věci – tento plugin na rozdíl od Dashboardu pracuje i s Helm šablonami, což jak si řekneme někdy později je zásadní nástroj pro reálnou práci s Kubernetes.

To ale stále není všechno. Tento pluginy přináší i porozumění struktuře Kubernetes YAML souborů. Podívejme se na to. Napsal jsem spec: a zmáčknul CTRL+mezerník.

Přesně tak. Intellisense pro Kubernetes, který vám radí co můžete použít a kontroluje pro vás syntaktickou správnost vašich YAML souborů.

Více informací o možnostech a variantách ovládání Kuberneres si přečtěte v Tomášovém článku  “Kubernetes prakticky: finty pro ovládaní aneb kdy CLI a kdy GUI a jaké

PU15のバイナリーアップデートがGlobalUpdate scriptステップで異常終了する現象

$
0
0

クラウドホスト環境等に、最新のPU15のバイナリーアップデートを適用すると
GlobalUpdate script for service model で失敗する現象が報告されています。

 

(回避策)
RDPファイルをLCSからダウンロードして、VMにログインします。
Add or remove programsを検索して起動します。

Microsoft ODBC Driver 17 for SQL Serverを選択して[Modify]をクリック。
Repairを選択して、修復してください。

その後、LCSの環境ページから[再開]( Resume)を実行して適用を再開してください。

Azure Web Apps / Azure Functions で利用可能なネットワーク関連のツール

$
0
0

こんにちは。Azure PaaS Developer サポートの村山です。

海外のブログではすでに紹介されているのですが、Azure Web Apps や Azure Functions で、SQL Database など別サービスのエンドポイントと疎通確認をするときや、VNET 統合を利用して仮想ネットワークと接続後、仮想ネットワーク内のリソースとの接続を確認をする場合によく使うコマンドなどを紹介します。 

 

Azure Web Apps / Azure Functions で Ping は利用できない 


最初に Azure Web Apps や Azure Functions 上では、Ping の実行が許可されていません。

また、Azure Load Balancer は、ICMP プロトコルの通過を許可していないので、Azure  Web Apps / Azure Functions への Ping もできません。 

なお、ping がタイムアウトする話の詳細はこちらのブログに書かれています。 

このため、Azure  ポータル上から Web Apps を選択後、[コンソール] などで Ping を実行しようとすると画像のようにエラーが発生します。

Kudu のコンソール (https://yourwebapp.scm.azurewebsites.net/DebugConsole) 上で実行した場合も結果は同様です。

 

 

では、どうすればよいでしょうか? tcpping と呼ばれるツールがあるのでこちらを利用しましょう。

 

tcpping を実行する


tcpping を コンソール上で実行するとこんな感じになります。 

 

 

Web Apps でエンドポイントへの接続確認をする場合は、Ping の代わりに tcpping を利用してください。

 

例えば、Web Apps から Azure SQL Database を利用する際の接続確認として利用されます。SQL Database へ接続する場合は、ポート 1433 を指定してください。

 

 

また、Azure Web Apps では VNET 統合と呼ばれる機能を利用することで、仮想ネットワーク内に配置されている VM に接続できるようになります。

VNET 統合の設定後、Web Apps から仮想マシンのプライベート IP に接続できているかどうか確認する場合は、tcpping が役に立ちます。

なお、仮想ネットワーク内の VM に対して tcpping を実行する際は、仮想マシン側で開放しているポートを指定してください。

下記画像は、仮想ネットワーク内に配置した VM に割り当てられたプライベート IP に対して tcpping で接続確認を行っている例になります。

 

 

※ VNET 統合を利用することで、Web Apps から仮想マシンへは接続できますが、仮想マシンから Web Apps へのプライベートな接続はできません。費用が高額になりますが、ILB ASE と呼ばれるサービスを使ってください。 

VNET 統合の機能の紹介はこちらのドキュメントになります。 また、弊ブログのこちらの記事で ASE (App Service Environment)の紹介もしています。

 

nameresolver を利用する 


VNET 統合後や、ASE 利用時に、仮想ネットワーク側で自前の DNS を指定している場合、その DNS できちんと名前解決ができるか確認するコマンドとして nameresolver が利用可能です。

nameresolver では VNET 側で構成した DNS サーバーを指定可能です。 こちらはサンプルとして DNS を指定せずに nameresolver を利用した結果です。 

 

 

Network Traceも取得できる 


App Service のアウトバウンド通信に関しては、[問題の診断と解決] から Network Trace を利用することでパケットをキャプチャできるようになりました。(Basic プラン以上)

 

取得したトレースは Network Monitor や、WireShark 、Message Analyzer を使って解析が可能です。なお HTTPS などの TLS/SSL での通信は暗号化されますのでご注意ください。

※ VNET 統合を設定している App Service Plan や、従量課金プランの Azure Functions ではこの機能は利用できません。

 

 

 

"Collect Network Trace" を押下して Network Trace を収集します。

 

 

TCP Connections からコネクションの状況を確認することもできる


[問題の診断と解決] ブレードにある、"TCP Connections" では、自分の Web App の TCP コネクションの状況も確認することができます。

接続数の増減や、TIME_WAIT が発生しているかどうかなど、1 か月以上前までさかのぼって確認できます。

 

おまけ


curl コマンドも利用することが可能です。オプションをつける際は Kudu 上でしかうまく動作しなかったので、画像では、Kudu 上で実行しています。

 

まとめ 


Azure Web Apps / Azure Functions 上で実行可能なコマンドを紹介しました。

次回は、VNET 統合設定時のトラブルを例にとって実際にどのように利用するのかご紹介しようと思います。

 

※ 記事の内容は予告なく変更される可能性がございます。

 

2018 State of DevOps Report Now Available

$
0
0

The new State of DevOps Report is available, and it is a must-read. This is the best empirical analysis I have read of the practices that make organizations effective at software delivery. Here’s one of my favorite examples from the study:

J-Curve of DevOps Adoption

The study tracks the typical progression of a DevOps transformation in a J-Curve, from an optimistic start through the valley of despair as the team makes automation high fidelity, to the sunlight of continuous improvement. It’s great to see an understanding of the nonlinear progress.

At Microsoft, we feel privileged to be able to co-sponsor the 2018 State of DevOps Report. Our mission at Microsoft is to empower every person and every organization on the planet to achieve more. This research identifies the factors that can help empower every team to deliver better software.  I was lucky enough to be asked to give early feedback to Dr. Nicole Forsgren, Gene Kim and Jez Humble on the study design. The final study certainly doesn't disappoint.

 Best of Empirical Software Research

For more than four decades, serious researchers (e.g. Boehm) have been trying to predict what makes high performance in software organizations. Usually, when I have read survey-based research, I’ve joined a chorus screaming: Context! Sampling bias! Misleading methods! Hocus-pocus!

That’s not my reaction to the 2018 State of DevOps Report. You may have read Accelerate, in which the authors reported previous five years’ findings. Building on that data, with comparisons year over year, the 2018 Report goes much farther. Where previous years identified the differences in outcomes among high, medium and low performers, this study extends to “misguided” and “elite” performers as well. I find the authors’ willingness to retest their model unusual and helpful.

Technical DevOps Practices Covered in Greater Breadth

This 2018 research has significantly expanded the scope of work: to include practices around:

  • Cloud, Platform and Open Source
  • Outsourcing
  • Lean and Agile Practices
  • Monitoring and Observability
  • Continuous Testing
  • Managing Database Changes
  • Security

Predictive Model of Software Delivery and Operational Performance

With many studies, it can be hard to identify what factors really make a difference.  Not in this case. The Report identifies how both specific technical practices and organizational culture improve organizational performance. (In several cases, there are factors that diminish performance, such as functional outsourcing.) These relationships are summarized in the chart below.

Technical DevOps Practices Improving Performance

The study uses both technical practices and organizational culture to predict Software Delivery and Operational Performance.

I hope you’ll read the 2018 State of DevOps Report. You will a lot of prescriptive guidance on how to improve your team’s software delivery and operations.

 

Viewing all 35736 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>