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

Use SSL certificates on your Azure WebApp

$
0
0

Using SSL certificates with LetsEncrypt

On the following post we are going to explain how quickly and easy is to assign an SSL certificate to your Azure WebApp I have a WordPress WebApp already running and the first thing we want to do is to create a custom hostname for my site

At this point I only have the default domain name assigned when created the WebApp

image of custom-domain

We will go and add a hostname, in my case using an A record (you could use a CNAME record instead)

image of add-hostname

To validate the hostname we need to create a TXT record in our DNS registrar.

image of txt-record-add

We will add a new A record in our DNS registrar to resolve the hostname to the public IP address assigned to the WebApp. If you used a CNAME record then you would just resolve to the default domain used when creating the WebApp (davidsr.azurewebsites.net)

image of a-record-add-new

Once this has been processed in the registrar we will see the custom domain name successfully added in the azure portal

image of custom-domain-added

Doing a dig query to find the NS records to my custom domain name will answer with the original records from my DNS registrar

image of dig-ns-davidsr.me

Once TTL propagates we will be able to resolve the custom domain to the WebApp hosted in Azure

image of wordpress-installation

To install SSL certificates we will go to the Advanced Tools section of the WebApp, and Site Extensions

image of advanded-tools

image of site-extensions

We will go the gallery and search for Lets Encrypt

image of lets-encrypt-gallery

Install the module and go click play

image of install-and-play-letsencrypt

If we get the following message the workaround is to stop and start the WebApp

image of no-route-registered-letsencrypt

If this is successful we will see the Lets Encrypt Authentication Settings

image of Lets-encrypt-authentication-settings

We will need to create a service principal for my subscription, so LetsEncrypt can access the WebApp application settings and bind the certificate

image of create-sp

We can see the service principal on the Azure portal, on the WebApp go to Access Control and select the name of the service principal. Then under properties you will see the same values we got using the Powershell command

image of sp-azure-portal

Now back to the authentication settings of Lets Encrypt, we will need the TenantID, SubscriptionID, ClientID, ClientSecret and RG name ClientID is the value you get as appID when created the service principal, ClientSecret is the password

TenantID can be easily seen here:

image of tenant-id

ClientID can be seen here on the portal:

image of client-id

Once we pass this checks we are almost done

image of letsencrypt-result

We will hit next and create our SSL certificate, assigned to the custom domain

image of certificate-installed

Finally, we just check on the WebApp SSL bindings section that the certificate is being assigned to my custom domain

image of sslbindings

And the final check is to go to the site check you use HTTPS

image of https-working


Errors for Blobstore Requests in South Central US – 06/14 – Investigating

$
0
0

Update: Thursday, June 14th 2018 20:05 UTC

Storage team is engaged and continues to investigate the issue.

  • Work Around: None
  • Next Update: Before Thursday, June 14th 2018 21:15 UTC

Sincerely,
Samuli


Update: Thursday, June 14th 2018 19:09 UTC

Storage team has been engaged and they are investigating the issue

Directly impacted services include Artifacts, Blobstore, Packaging and Feeds

To end users the impact is visible primarily as 503 errors in some requests to blobstore

Work Around: None

Next Update: Before Thursday, June 14th 2018 20:15 UTC

Sincerely,
Samuli


Initial Update: Thursday, June 14th 2018 18:05 UTC

We're investigating HTTP 503 errors for BlobStore requests in South Central US.

This will primarily impact builds seeing 503 errors for some Blobstore requests

Next Update: Before Thursday, June 14th 2018 18:40 UTC

Sincerely,
Dexter

Custom URL path for Pass-through SOAP connector for Azure Logic App

$
0
0

Earlier this year I blogged about the release of pass-through SOAP Custom Connector for Logic Apps, which included a basic example with no custom URI path:

https://blogs.msdn.microsoft.com/david_burgs_blog/2018/02/28/logic-app-soap-pass-through-custom-connector/

Some SOAP services need to customize the URL path, for instance those using a sub-path for connecting with WS-Security Username Token as does GEP's Master Data SOAP service https://smartinterfaceuatweb.gep.com/MasterDataService.svc (with a BasicSecuredWithCredential suffix path turning the full URI into https://smartinterfaceuatweb.gep.com/MasterDataService.svc/BasicSecuredWithCredential - note you cannot browse this as-is).

The current user interface for the creation and edition of Custom Connector may lead you to attempt keeping the base URL unchanged on the General tab, like this:

Then under the Definition tab you may try to provide a custom Operation ID as URL suffix, like this (don't do that, this is just for illustration):

If you do that, you are likely to get a failure for your calls with HTTP response code 404 / 'Not Found' error.

For SOAP to REST connectors you would see a list of all the operations as calls to specific SOAP operations are made in the backend service. In case of SOAP pass-through, there is only one operation which acts as a proxy to call the SOAP operation, the SOAP operation you would use is controlled by the headers (or SOAP action element, depending of the specific SOAP service expectations and your chosen approach as the SOAP client).
For SOAP to REST connectors, each operation has unique logic to convert the Json payload to appropriate XML given the matching SOAP action. Then it rewrites the URL to the common host and base URL defined in the general tab.
For SOAP pass-through, there is only one operation which leaves the payload as-is (the caller of the action is responsible for forming the XML message). It does still rewrite the URL to the common host and base URL defined in the general tab, assuming you have not modified the operation definition.

So, do not update the definitions tab for SOAP pass-through. Keep the definition as-is. Instead, insert the URL suffix in the Base URL of the General tab, like this:

Finally, you may have notice on the Definition tab the URL field which changes with modification you might have done to the Operation Id. Ignore that URL in the specific context of SOAP pass-through as it is misleading.

Note: I do not have a full step-by-step example with the GEP service or another SOAP service requiring a custom URL suffix, including test call payload and headers. If you happen to use this scenario and can share the steps, please do reach out or add it in a comment below for the community's benefit.

No container image for Build Tools for Visual Studio 2017

$
0
0

After having written documentation about installing Build Tools for Visual Studio 2017 and working with partners to set up validation starting with Visual Studio 2017 Version 15.7, a common question from customers and partners alike is: are you going to publish a container image in a Docker registry? With DockerCon 2018 in full swing, there's no better time to answer this question.

In short, we have no plans to publish such an image. A full Build Tools image is currently ~58GB and contains support for more workloads than probably any developer needs.

We are interested in common customer workload requirements and scenarios and are exploring options to simplify deployment of build environments. Perhaps someday we may publish one or more container images. This is why the documentation exists now: to aide our customers and partners to tailor a container image to fit their needs. In Visual Studio 2017 Version 15.7 we made significant improvements to the Build Tools SKU to increase the number of workloads it supports since running the Visual Studio IDE (or even just using its build toolchain) in a container is not supported. This also greatly increased the size for a full install from previous releases when installing into a container was not officially supported but mostly worked.

For example, to build the setup engine and installer shell, we would use a Dockerfile similar to the following:

# escape=`

# Copyright (C) Microsoft Corporation. All rights reserved.

# ARG FROM_IMAGE=microsoft/dotnet-framework:4.7.1-sdk-windowsservercore-1709
ARG FROM_IMAGE=microsoft/dotnet-framework:3.5-sdk-windowsservercore-1709
FROM ${FROM_IMAGE}

# Reset the shell.
SHELL ["cmd", "/S", "/C"]

# Set up environment to collect install errors.
COPY Install.cmd C:TEMP
ADD https://aka.ms/vscollect.exe C:TEMPcollect.exe

# Install Node.js LTS
ADD https://nodejs.org/dist/v8.11.3/node-v8.11.3-x64.msi C:TEMPnode-install.msi
RUN start /wait msiexec.exe /i C:TEMPnode-install.msi /l*vx "%TEMP%MSI-node-install.log" /qn ADDLOCAL=ALL

# Download channel for fixed installed.
ARG CHANNEL_URL=https://aka.ms/vs/15/release/channel
ADD ${CHANNEL_URL} C:TEMPVisualStudio.chman

# Download and install Build Tools for Visual Studio 2017.
ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:TEMPvs_buildtools.exe
RUN C:TEMPInstall.cmd C:TEMPvs_buildtools.exe --quiet --wait --norestart --nocache `
--channelUri C:TEMPVisualStudio.chman `
--installChannelUri C:TEMPVisualStudio.chman `
--add Microsoft.VisualStudio.Workload.ManagedDesktopBuildTools `
--add Microsoft.Net.Component.3.5.DeveloperTools `
--add Microsoft.Net.ComponentGroup.4.6.2.DeveloperTools `
--add Microsoft.Net.ComponentGroup.TargetingPacks.Common `
--add Microsoft.VisualStudio.Component.TestTools.BuildTools `
--add Microsoft.VisualStudio.Workload.VCTools `
--add Microsoft.VisualStudio.Component.VC.140 `
--add Microsoft.VisualStudio.Component.VC.ATL `
--add Microsoft.VisualStudio.Component.VC.CLI.Support `
--add Microsoft.VisualStudio.Component.Windows10SDK.16299.Desktop `
--add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP `
--add Microsoft.VisualStudio.Workload.NodeBuildTools `
--add Microsoft.VisualStudio.Component.TypeScript.2.8 `
--installPath C:BuildTools

# Use developer command prompt and start PowerShell if no other command specified.
ENTRYPOINT C:BuildToolsCommon7ToolsVsDevCmd.bat &&
CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]

This uses a slightly older Windows container image since the continuous integration agent runs Windows Server 2016.

Like with this example, you can construct a Dockerfile with whatever tools and libraries you need and either publish it to your own container registry or have developers build and maintain images from source. You could even simplify the process of building and running within the image using docker-compose. This Dockerfile only took ~10 minutes to build and is ~22.5GB (which includes the base image size of ~9GB) expanded. Depending on your network bandwidth building the image could be faster or at least less strain on network infrastructure.

Sharing Deployment Groups Across Team Projects in VSTS

$
0
0

Premier Developer Consultant Derrick Cawthon walks through how to share deployment groups across team projects in VSTS, so you can take full advantage of your infrastructure and maximize investment in cloud services.


One of the many recent enhancements to VSTS (Visual Studio Team Services) is the adding of Deployment Groups back in 2017. However ever since they were added the next obvious question was: How do I share these across my Team Projects (similar to how Agents work across Team Projects). This scenario is useful in order to allow organizations to take full advantage of their infrastructure and maximize the return on investment in cloud technologies such as Microsoft Azure.

Read the post on Derrick’s blog to see this scenario in action.

How-to: Basic check for Exchange Web Services connectivity using code

$
0
0

When a program is about to start talking to Exchange there is the chance of some sort of connectivity problem which will cause its EWS calls to fail. A basic can EWS call can be done to see if EWS can be reached and process a basic request. Below is such a connectivity test call where a call to the EWS is done to convert the Id of an item from one form to another. This call should be processed and EWS respond with a 200 even though the conversion failed. What is important here is that EWS does process the request and reply with a 200 response – which means that the application can talk to EWS. If there was an issue such as one with authentication, then 401 would be returned.

 

Note that you can use any EWS call for checking connectivity. The example used here is what EwsEditor uses when you first log in.

 

Request:

 

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Header>

<t:RequestServerVersion Version="Exchange2013" />

</soap:Header>

<soap:Body>

<m:ConvertId DestinationFormat="HexEntryId">

<m:SourceIds>

<t:AlternateId Format="HexEntryId" Id="00" Mailbox="blah@blah.com" />

</m:SourceIds>

</m:ConvertId>

</soap:Body>

</soap:Envelope>

 

Response:

 

HTTP/1.1 200 OK

Transfer-Encoding: chunked

Content-Encoding: gzip

Vary: Accept-Encoding

request-id: b0493d2e-ac19-4199-8be3-b413149b9317

client-request-id: 945f0cef-60f6-4813-be00-7cb5eee92240

( The header is truncated )

 

<?xml version="1.0" encoding="utf-8"?>

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Header>

<h:ServerVersionInfo MajorVersion="15" MinorVersion="1" MajorBuildNumber="1157" MinorBuildNumber="22" Version="V2017_04_14" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

</s:Header>

<s:Body>

<m:ConvertIdResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">

<m:ResponseMessages>

<m:ConvertIdResponseMessage ResponseClass="Error">

<m:MessageText>Data is corrupt., Store ID isn't an ID of a folder, item or mailbox.</m:MessageText>

<m:ResponseCode>ErrorCorruptData</m:ResponseCode>

<m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>

</m:ConvertIdResponseMessage>

</m:ResponseMessages>

</m:ConvertIdResponse>

</s:Body>

</s:Envelope>

 

Proactively Plan for your Critical Event in Azure with Enhanced Support and Engineering Services

$
0
0

In this post, Principal Consultant Jon Guerin lays out the benefits of Azure Event Management (AEM) and how to get started with the program.


Deploying an application to Azure in support of a high-profile business event can have many advantages. But failing to assess up front potential gaps that could negatively affect performance and availability during the event and can result in an undesirable impact to the company’s topline. Consider having an elevated support experience from Microsoft before, during and after the event orchestrated by your Application Development Manager.

Microsoft Unified and Premier customers have access to several programs that provide a dedicated support team during a critical event. Examples of high profile events can be seasonal peak usage, sporting and marketing events.

To minimize risk of issues during the event your Application Development Manager can help you get setup in Microsoft’s Azure Event Management service. Azure Event Management (AEM) is the preferred enhanced support and engineering services program for critical events and available as an add-on to Unified or Premier customer agreements. AEM provides you with event pre-planning, proactive best practices guidance and problem resolution support during your event. The AEM team will conduct a review of your Azure solution to increase chances of success. A team of Azure experts will offer awareness and important information to ensure you are well prepared. And during the event you will get dedicated support from AEM, the same team that performed the resiliency assessment, with a 15-minute SLA response time for any critical issues that may occur.   

AEM will proactively examine the health of your production subscription for Storage capacity, CPU, Disk Failures, IOPS Optimization, Availability Set Isolation and other potential single points of failure. We can also establish a direct bridge line to product engineering should an issue occur during the event. For the period of the event window there is an option for a dashboard of resource performance and throughput status in case of escalations.

Key features of AEM include enhanced reactive support during your event, proactive preparation before your event to ensure readiness, recommended practices from knowledgeable Azure event engineers, an assigned Azure support team and post-event summary analysis.

For the most critical high-profile events such as the Super Bowl, Olympics and elections your Application Development Manager can nominate your organization for Microsoft’s High Priority invitation only program where Microsoft will commit additional resources directly from the Engineering team to ensure success.

To learn more about Azure Event Management and other enhanced support and engineering services to help ensure your critical event’s success contact your Application Development Manager or Microsoft support representative.


Thanks to the following reviewers:

Tina Stewart, Principal Program Manager, Customer Experience Program

Loan Tong, Senior Program Manager, Customer Experience Program

Alex Taege, Business Program Manager, Enhanced Solutions

Azure AD B2C settings menu unable to load for a small set of customers

$
0
0

A very small set of customers may experience failures loading the Azure AD B2C settings menu in the Azure portal. This does not affect end-users authenticating against Azure Active Directory B2C. As a temporary workaround, administrators should load the settings menu in a different browser or using the Private mode. As per our investigation, the issue may be occurring more often in the Edge browser than others.

We apologize for the inconvenience and are investigating the issue actively. If you have any additional insights/repro, please communicate with us on AADB2CPreview@microsoft.com.

 

 


TFS 2018–XAML is back?!

$
0
0

In this post, Premier Developer Consultant Derrick Cawthon weighs in on one of the latest announcements that TFS 2018 will include XAML builds.


Starting in TFS 2017 it was announced that XAML builds were being deprecated. No big surprise to anyone paying attention as they are an older build system which had to go at some point. However this was a HUGE blocker for alot of customers who want to upgrade but don’t/can’t invest the time to switch hundreds of build definitions from XAML to Task based. Now (due to customer feedback) it’s been decided to deprecate XAML builds but leave the functionality in there. I think its a great compromise…letting our legacy customers get the new features while not permitting them from upgrading directly.


Keep reading the post here.

Angular How-to: Simplify Components with TypeScript Inheritance

$
0
0

Laurie Atkinson, Senior Consultant, By moving shared functionality to a base component and assigning dependencies inside the body of the constructor, you can simplify child components.


If your Angular components contain identical or similar functionality and you find yourself copying and pasting that code, it makes sense to implement some class inheritance, which is available with TypeScript. And, you can simplify the child components even further by removing the dependencies from the parent constructor arguments and manually assigning them inside the constructor.

Create the base component

In this example, we have 2 services that are used in the base class and are assigned using dependency injection.

base.component.ts


@Component({
    template: ''
})
export class BaseComponent {

    constructor(protected utilitiesService: UtilitiesService,
        protected loggingService: LoggingService) {
        this.logNavigation();
    }

    protected logError(errorMessage: string) { . . .}
    private logNavigation() { . . .}
}



Inherit child component from base component

Note that our child component must pass all parent dependencies into the constructor to extend it.

child.component.ts


    @Component({ . . . })

    export class ChildComponent extends BaseComponent {
    
    constructor(private childDataService: ChildDataService,
    
    utilitiesService: UtilitiesService,
    
                  loggingService: LoggingService) {
    
    super(utilitiesService, loggingService);
    
      }
    
    }    


As you can see, with a substantially complex base class, the child classes will potentially need to include a much longer list of all its parent’s dependencies. And if the parent introduces a new dependency, then all children must be updated. This may be fine, but if you want to simplify the child classes as much as possible, then take a look at this alternative.

Use a class to store the injector

This class will hold the module’s injector. It will be set once and retrieved whenever a component or service needs to get a service dependency.

app-injector.service.ts


    import { Injector } from '@angular/core';

    export class AppInjector {
    
    private static injector: Injector;
    
    static setInjector(injector: Injector) {
    
            AppInjector.injector = injector;
    
        }
    
    static getInjector(): Injector {
    
    return AppInjector.injector;
    
        }
    
    }       


After the module has been bootstrapped, store the module’s injector in the AppInjector class.

main.ts


    platformBrowserDynamic().bootstrapModule(AppModule).then((moduleRef) => {
        AppInjector.setInjector(moduleRef.injector);
    });        



Use this injector class to assign dependencies

Now, we can modify the base component to remove all constructor arguments.

base.component.ts


    @Component({
        template: ''
    })    
    export class BaseComponent {    
        protected utilitiesService: UtilitiesService;    
        protected loggingService: LoggingService;
    
    constructor() {    
            // Manually retrieve the dependencies from the injector    
            // so that constructor has no dependencies that must be passed in from child    
            const injector = AppInjector.getInjector();    
            this.utilitiesService = injector.get(UtilitiesService);    
            this.loggingService = injector.get(LoggingService);    
            this.logNavigation();
    
        }
    
        protected logError(errorMessage: string) { . . . }    
        private logNavigation() { . . . }
    }         



Inherit child component from base component

Now the child component only needs to use dependency injection for its own dependencies.

child.component.ts


    @Component({ . . . })
    export class ChildComponent extends BaseComponent {
    
    constructor(private childDataService: ChildDataService) {    
        super();    
      }    
    }            



Use the power of polymorphism to maximize code reuse

For maximum reuse of code, do not limit the methods in the parent class to merely those with identical implementations. Maybe you can refactor a complex method into pieces where shared logic can be moved into the parent. Maybe a method shares most of the logic with another component, but a few pieces differ between components which could be implemented in each child.

TypeScript inheritance allows you to override a parent method in the child class and if the parent calls that method, the child’s implementation will be invoked. For example, follow the order of execution shown in this picture, starting with a call to methodA() in ChildComponent.

clip_image002[4]

Here is a non-trivial code example to illustrate the power of this feature. This application contains many pages, each comprised of a form. All these form pages share the following functionality:

  • only allow editing if the user has permission
  • save changes via a call to an API service
  • prompt the user if attempting to navigate away and there are unsaved changes

Build a form base component

form.component.ts


    @Component({
        template: ''
    })
    export class BaseFormComponent extends BaseComponent implements OnInit {
    
        updatePermission = 'UPDATE_FULL'; // Can override in child component
    
        protected routeParamName: string; // value always set in child
    
        protected entity: IEntity; // data on the form
    
        protected original: IEntity; // data before any changes are made
    
        protected dataService: EntityDataService; // service with http methods
    
        protected updateService: UpdateService;
    
        protected authorizationService: AuthorizationService;
    
        @ViewChild('confirmationDialog') confirmationDialog: ConfirmDialogComponent;
    
        constructor(protected route: ActivatedRoute) {
            super(); // call parent constructor
            const injector = AppInjector.getInjector();
            this.updateService = injector.get(UpdateService);
            this.authorizationService = injector.get(AuthorizationService);
        }
    
        ngOnInit() {
            this.route.data.subscribe(data => { // data from route resolver
                this.entity = data[this.routeParamName]; // routeParamName from child
                . . .
                this.additionalFormInitialize(); // optional initialization in child
            });
        }
    
        protected additionalFormInitialize() { // hook for child
    
        }
    
        // Child could override this method for alternate implementation
    
        hasChanged() { return !UtilitiesService.isEqual(this.original, this.entity); }
    
        // used by canDeactive route guard
    
        canDeactivate() {
            if (!this.hasChanged()) {
                return true;
            }
            return this.showConfirmationDialog().then(choice => {
                return choice !== ConfirmChoice.cancel;
            });
        }
    
        showConfirmationDialog() {
    
            return new Promise((resolve) => {
    
                this.confirmationDialog.show();
                . . .
    
                this.save().then(() => {
                . . .
    
                }, (err) => {
                    this.logError(err); // Implemented in base parent component
                });
    
            });
    
        }
    
        save() {
    
            // Value of dataService set in the child to support different APIs
            // Optionally override saveEntity in the child
    
            return this.updateService.update(this.dataService, this.saveEntity).then( . . .
    
       }
    
        protected get saveEntity() { return this.entity; }
    
        // Use in child HTML template to limit functionality
        get editAllowed() { // updatePermission could be overridden in the child
            return this.authorizationService.hasPermission(this.updatePermission);
        }
    
    }              



Build a specific form child component

child.component.ts


    @Component({. . .})

    export class ChildComponent extends BaseFormComponent {
    
        updatePermission = 'CHILD_UPDATE'; // can override the default permission
    
        protected routeParamName = 'child'; // required by parent to read route data
    
        constructor(private childDataService: ChildDataService) {
    
            super();
    
        }
    
        protected get dataService() { return this.childDataService; }
    
        protected get saveEntity() {
    
            // perhaps do some custom manipulation of data before saving
    
            return localVersionOfEntity;
    
        }
    
        protected additionalFormInitialize() {
    
            // Add custom validation to fields or other unique actions
    
        }
    
        hasChanged() {
    
            // Could override this method to implement comparison in another way 
    
        }
    
    }                 

As you proceed with your development, if you find yourself copying and pasting code, take a moment to see if some refactoring might be in order. Class inheritance can give you an opportunity to delete some code and that always feels good. Doesn’t it?

.NET Core 2.1 Update strategy

$
0
0

This post is provided by App Dev Manager Anant Dimri who shares some helpful Q/A around .NET Core patching strategy.


We know that we can create two types of deployments for .NET Core applications:

  • Framework-dependent deployment. As the name implies, framework-dependent deployment (FDD) relies on the presence of a shared system-wide version of .NET Core on the target system. Because .NET Core is already present, your app is also portable between installations of .NET Core. Your app contains only its own code and any third-party dependencies that are outside of the .NET Core libraries. FDDs contain .dll files that can be launched by using the dotnet utility from the command line. For example, dotnet app.dll runs an application named app.
  • Self-contained deployment. Unlike FDD, a self-contained deployment (SCD) doesn't rely on the presence of shared components on the target system. All components, including both the .NET Core libraries and the .NET Core runtime, are included with the application and are isolated from other .NET Core applications. SCDs include an executable (such as app.exe on Windows platforms for an application named app), which is a renamed version of the platform-specific .NET Core host, and a .dll file (such as app.dll), which is the actual application.

In a package, you can have .NET core runtime dlls as well as your or 3rd party dlls that you have referenced. When planning for a patching strategy for your .NET core apps, there are certain nuances and questions that come up.

Question: When you publish ASP.NET Core web application that use CodeGen applications, it creates a runtimes folder. Can you help me understand what causes the runtimes directory to be created?

Answer: Runtimes folder is created whenever any native (os/architecture specific) assets are resolved from nuget packages. When the native assets are part of a “shared framework” or “Runtime store”, they get knocked out of the published output because they are in the “platform”. You shouldn’t be able to delete the folder. At startup, the app is supposed to be checked for completeness.
For .NET Core 2.0 and ASP.NET Core 2.0 and higher, we no longer recommend referencing the individual packages. Just target netcoreapp2.0 and reference the Microsoft.AspNetCore.All (or .App in 2.1). Then you can bring in a smaller set of packages that are not in the platform.

Question: When you publish ASP.NET Core web application that uses CodeGen applications, it creates a refs folder.   What is this used for?

Answer: The “refs” folder is created when the <PreserveCompilationContext> msbuild property is set to true. This is required for applications that need to preserve the assemblies that were used during compilation, typically because they need to do some compilation at runtime as well, e.g. to compile Razor views. 

We set that to “true” by default when the project uses the Microsoft.NET.Sdk.Web (which ASP.NET Core projects should always be doing). However, our Razor packages include a target that during “dotnet publish” pre-compiles the Razor views and then removes the ref folder from the output. This behavior is enabled when the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation package is referenced. It can be further controlled by setting the < MvcRazorCompileOnPublish> property. The Microsoft.AspNetCore.All package pulls in this package so that behavior is enabled by default for all new projects.

In short, if you have Razor views in your application, we recommend configuring the project to compile them during publish, by referencing the Microsoft.AspNetCore.Mvc.Razor.ViewCompilation package. This will improve startup time and remove the “refs” folder from our publish output for you.

Question: How does the minor version roll-forward work based, as outlined by this article https://blogs.msdn.microsoft.com/dotnet/2018/02/02/net-core-2-1-roadmap/

Answer:  With 2.0,  version 2.0.3 rolls forward to 2.0.5 if its installed. 2.0.3 does not roll forward to 2.1.0 if its installed

Starting with 2.1, version 2.0.3 will roll forward to 2.1 if and only if there is not 2.0.X on the machine that satisfies it. We do our best to maintain compatibility between minor versions but if an application doesn’t work properly when rolling forward to a new minor, we recommend that a runtime with a minor matching the one the application was built for be installed. We prefer the thing that is closest to what the application was built with plus critical maintenance patches.

Special thanks and shoutout to Azure .NET core team and our awesome partner Matthew, https://github.com/mchender


Premier Support for Developers provides strategic technology guidance, critical support coverage, and a range of essential services to help teams optimize development lifecycles and improve software quality.  Contact your Application Development Manager (ADM) or email us to learn more about what we can do for you.

SAP on Azure: General Update – June 2018

$
0
0

SAP and Microsoft are continuously adding new features and functionalities to the Azure platform. The key objective of the Azure cloud platform is to deliver the best performance and availability at the lowest TCO and simplest operation. This blog includes updates, fixes, enhancements and best practice recommendations collated over recent months.

1. M-Series is Certified for SAP Hana – S4, BW4, BWoH and SoH up to 3.8TB RAM

SAP Hana customers can run S4HANA, BW4Hana, BW on Hana and Business Suite on Hana in Production in many of the Azure datacenters in Americas, Europe and Asia. https://azure.microsoft.com/en-us/global-infrastructure/regions/ More information in this blog: https://azure.microsoft.com/en-us/blog/azure-m-series-vms-are-now-sap-hana-certified/

Requirements: Write Accelerator must be used for the Transaction Log disk only. Suse 12.3 or RHEL 7.3 or higher.

The SAP IaaS catalogue now includes M-series and Hana Large Instances

More information on the Write Accelerator can be found here:

https://azure.microsoft.com/en-us/blog/write-accelerator-for-m-series-virtual-machines-now-generally-available/

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/how-to-enable-write-accelerator

The central Note for SAP Hana on Azure VMs is Note 1928533 - SAP Applications on Azure: Supported Products and Azure VM types https://launchpad.support.sap.com/#/notes/0001928533

The Note for Hana Large Instances for memory up to 20TB scale up is Note 2316233 - SAP HANA on Microsoft Azure (Large Instances) https://launchpad.support.sap.com/#/notes/2316233

Summary of M-Series VMs for SAP NetWeaver and SAP Hana

M-Series running SAP Hana

1. Transaction Log disk(s) must have Azure Write Accelerator Enabled https://docs.microsoft.com/en-us/azure/virtual-machines/linux/how-to-enable-write-accelerator

2. Azure Write Accelerator must not be activated on Data disks

3. Azure Accelerated Networking should always be enabled on M-Series VMs running Hana

4. The precise OS releases that are supported for Hana can be found in the SAP Hana IaaS Directory https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/iaas.html#categories=Microsoft%20Azure

5. Where there is any discrepancy between any SAP OSS Note such as 1928533 or other source the SAP Hana IaaS Directory takes precedence

M-Series running AnyDB (SQL, Oracle, Sybase etc)

1. Windows 2012 2016, Suse 12.3, RH 7.x and Oracle Linux are all supported

2. Transaction Log disk(s) could have Azure Write Accelerator Enabled https://docs.microsoft.com/en-us/azure/virtual-machines/linux/how-to-enable-write-accelerator

3. Azure Write Accelerator must not be activated on Data disks

4. Azure Accelerated Networking should always be enabled on M-Series VMs running AnyDB

5. If running Oracle Linux the RHEL kernel must be used as at June 2018 instead of Oracle UEK4 kernel. Oracle UEK5 will support Accelerated Networking with Oracle 7.5

Additional Small Certified M-Series VMs

Small M-Series VMs are certified:

1. M64ls with 64vCPU and 512GB

2. M32ls with 32vCPU and 256GB

3. M32ts with 32vCPU and 192GB

Disk configuration and additional information on these new smaller M-Series VMs can be found here https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/hana-vm-operations

2. SAP NetWeaver on Windows Hyper-V 2016 Fully Supported

Windows Server 2016 Hyper-V is now fully supported as a Hypervisor for SAP applications running on Windows.

Hyper-V 2016 is a powerful component for customers wishing to deploy a hybrid cloud environment with some components on-premises and some components on Azure.

A special fix for Windows 2016 is required before using Hyper-V 2016. Apply the latest update for "Windows 10/Windows Server 2016 1607" but at least this patch level https://support.microsoft.com/en-us/help/4093120/windows-10-update-kb4093120

https://wiki.scn.sap.com/wiki/display/VIRTUALIZATION/SAP+on+Microsoft+Hyper-V

1409604 - Virtualization on Windows: Enhanced monitoring https://launchpad.support.sap.com/#/notes/0001409604

1409608 - Virtualization on Windows https://launchpad.support.sap.com/#/notes/0001409608

More information on Windows 2016 for SAP is here:

https://blogs.msdn.microsoft.com/saponsqlserver/2017/03/07/windows-2016-is-now-generally-available-for-sap/

https://blogs.sap.com/2017/05/06/performance-tuning-guidelines-for-windows-server-2016-hyper-v/

3. Build Disaster Recovery Capability within Azure Regions with Availability Zones

Availability Zones are Generally Available in many Azure Regions and are being deployed to most Azure regions shortly.

Availability Zones are physically separated datacenters with independent network and power infrastructure

VMs running in an Availability Zone achieve an SLA of 99.99% https://azure.microsoft.com/en-us/support/legal/sla/virtual-machines/v1_8/

A very good overview of Availability Zones on Azure and the interaction with other Azure components is detailed in this blog

https://blogs.msdn.microsoft.com/igorpag/2018/05/03/azure-availability-zones-quick-tour-and-guide/

More information below

https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-standard-availability-zones

https://blogs.msdn.microsoft.com/igorpag/2017/10/08/why-azure-availability-zones/

https://azure.microsoft.com/en-us/global-infrastructure/availability-zones/

A typical topology is depicted below.


The Azure Standard Internal Load Balancer is used for workloads that are distributed across Availability Zones. Even when deploying VMs into an Azure region that does not yet have Availability Zones it is recommended to use the Standard Internal Load Balancer in Zone-redundant mode. This allows

To view the VM types that are available in each Availability Zone in a Datacenter run this PowerShell command

Get-AzureRmComputeResourceSku | where {$_.Locations.Contains("southeastasia")-and $_.ResourceType.Equals("virtualMachines") -and $_.LocationInfo[0].Zones -ne $null }

Similar information can be seen in the Azure Portal when creating a VM

Customers building High Availability solutions with Suse 12.x operating system can review documentation on how to deploy single SID and Multi SID Suse Pacemaker clusters

The Microsoft documentation discusses the scenario "Microsoft SAP Fencing Agent + single iSCSI" STONITH configuration

An alternative deployment scenario "Two iSCSI devices in different Availability Zones".

A Suse bug fix may be required to configure two iSCSI devices:
https://www.suse.com/support/kb/doc/?id=7022477

https://ptf.suse.com/f2cf38b50ed714a8409693060195b235/sles12-sp3-hae/14410/x86_64/20171219  (a user id is needed)

A recommended deployment configuration is to place each iSCSI source in a different Availability Zone.

4. Sybase ASE 16.3 PL3 "Always-on" on Azure – 2 Node HA + 3rd Async Node for DR

A new blog with step-by-step instructions on how to install and configure a 2 node HA Sybase cluster with a third node for DR has been released.

https://blogs.msdn.microsoft.com/saponsqlserver/2018/05/18/installation-procedure-for-sybase-16-3-patch-level-3-always-on-dr-on-suse-12-3-recent-customer-proof-of-concept

5. Very Useful Links for SAP on Azure Consultants

The listing below is a comprehensive collection of links that has proved very useful for many consultants working at System Integrators.

SAP on Azure Reference Architectures

SAP S/4HANA for Linux Virtual Machines on Azure https://docs.microsoft.com/en-gb/azure/architecture/reference-architectures/sap/sap-s4hana

Run SAP HANA on Azure Large Instances https://docs.microsoft.com/en-gb/azure/architecture/reference-architectures/sap/hana-large-instances

Deploy SAP NetWeaver (Windows) for AnyDB on Azure Virtual Machines https://docs.microsoft.com/en-gb/azure/architecture/reference-architectures/sap/sap-netweaver

High Availability SAP Netweaver Any DB

High-availability architecture and scenarios for SAP NetWeaver

Azure Virtual Machines high availability architecture and scenarios for SAP NetWeaver https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-high-availability-architecture-scenarios

https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/high-availability-guide-suse

Azure infrastructure preparation for SAP NetWeaver high-availability deployment

Prepare Azure infrastructure for SAP high availability by using a Windows failover cluster and shared disk for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-high-availability-infrastructure-wsfc-shared-disk

Prepare Azure infrastructure for SAP high availability by using a Windows failover cluster and file share for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-high-availability-infrastructure-wsfc-file-share

Prepare Azure infrastructure for SAP high availability by using a SUSE Linux Enterprise Server cluster framework for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/high-availability-guide-suse#setting-up-a-highly-available-nfs-server

Installation of an SAP NetWeaver high availability system in Azure

Install SAP NetWeaver high availability by using a Windows failover cluster and shared disk for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-high-availability-installation-wsfc-shared-disk

Install SAP NetWeaver high availability by using a Windows failover cluster and file share for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-high-availability-installation-wsfc-file-share

Install SAP NetWeaver high availability by using a SUSE Linux Enterprise Server cluster framework for SAP ASCS/SCS instances https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/high-availability-guide-suse#prepare-for-sap-netweaver-installation

High Availability SAP Hana

HANA Large Instance

SAP HANA Large Instances high availability and disaster recovery on Azure https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/hana-overview-high-availability-disaster-recovery

High availability set up in SUSE using the STONITH https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/ha-setup-with-stonith

SAP HANA high availability for Azure virtual machines https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/sap-hana-availability-overview

SAP HANA availability within one Azure region https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/sap-hana-availability-one-region

SAP HANA availability across Azure regions https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/sap-hana-availability-across-regions

Disaster Recovery

Protect a multi-tier SAP NetWeaver application deployment by using Site Recovery https://docs.microsoft.com/en-gb/azure/site-recovery/site-recovery-sap

SAP HANA Large Instances high availability and disaster recovery on Azure https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/hana-overview-high-availability-disaster-recovery

Setting Up Hana System Replication on Azure Hana Large Instances https://blogs.msdn.microsoft.com/saponsqlserver/2018/02/10/setting-up-hana-system-replication-on-azure-hana-large-instances/

Monitoring

New Azure PowerShell cmdlets for Azure Enhanced Monitoring https://blogs.msdn.microsoft.com/saponsqlserver/2016/05/16/new-azure-powershell-cmdlets-for-azure-enhanced-monitoring/

The Azure Monitoring Extension for SAP on Windows – Possible Error Codes and Their Solutions https://blogs.msdn.microsoft.com/saponsqlserver/2016/01/29/the-azure-monitoring-extension-for-sap-on-windows-possible-error-codes-and-their-solutions/

Azure Extended monitoring for SAP https://blogs.msdn.microsoft.com/saponsqlserver/2014/06/24/azure-extended-monitoring-for-sap/

https://docs.microsoft.com/en-us/azure/operations-management-suite/

https://azure.microsoft.com/en-us/services/monitor/

https://azure.microsoft.com/en-us/services/network-watcher/

Automation

https://azure.microsoft.com/en-us/services/automation/

Automate the deployment of SAP HANA on Azure https://github.com/AzureCAT-GSI/SAP-HANA-ARM

Migration from on-premises DC to Azure

Transfer data with the AzCopy https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy

Azure Import/Export service https://docs.microsoft.com/en-us/azure/storage/common/storage-import-export-service

Very Large Database Migration to Azure https://blogs.msdn.microsoft.com/saponsqlserver/2018/04/10/very-large-database-migration-to-azure-recommendations-guidance-to-partners/

SAP on Azure - DMO with System Move https://blogs.sap.com/2017/10/05/your-sap-on-azure-part-2-dmo-with-system-move/

SAP on Azure certification

SAP Certified IaaS Platforms https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/iaas.html#categories=Microsoft%20Azure

SAP Note #1928533 - SAP Applications on Azure: Supported Products and Azure VM types  https://launchpad.support.sap.com/#/notes/1928533

SAP certifications and configurations running on Microsoft Azure https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-certifications

Azure M-series VMs are now SAP HANA certified https://azure.microsoft.com/en-us/blog/azure-m-series-vms-are-now-sap-hana-certified/

Backup Solutions

Azure VM backup for OS https://azure.microsoft.com/en-gb/services/backup/

HANA VM Backup – overview https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-hana-backup-guide

HANA VM backup to file https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/sap-hana-backup-file-level

HANA VM backup based on storage snapshots https://docs.microsoft.com/en-gb/azure/virtual-machines/workloads/sap/sap-hana-backup-storage-snapshots

HANA Large Instance (HLI) Backup – overview https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/hana-overview-high-availability-disaster-recovery#backup-and-restore

HLI backup based on storage snapshots https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/hana-overview-high-availability-disaster-recovery#using-storage-snapshots-of-sap-hana-on-azure-large-instances

Use third party backup tools: Commvault, Veritas, etc.

All the major third-party backup tools are supported in Azure and have agents for SAP HANA, SQL, Oracle, Sybase etc

Commvault

Azure: https://documentation.commvault.com/commvault/v11/article?p=31252.htm

SAP HANA: https://documentation.commvault.com/commvault/v11/article?p=22305.htm

Azure Marketplace: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/commvault.commvault?tab=Overview

Veritas NetBackup

Azure: https://www.veritas.com/support/en_US/article.100041400

HANA: https://www.veritas.com/content/support/en_US/doc/16226696-127422304-0/v88504823-127422304

Azure Marketplace: https://azuremarketplace.microsoft.com/en-us/marketplace/apps/veritas.veritas-netbackup-8-s?tab=Overview

Security

Network

Logically segment subnets https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#logically-segment-subnets

Control routing behavior https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#control-routing-behavior

Enable Forced Tunneling https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#enable-forced-tunneling

Use virtual network appliances https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#use-virtual-network-appliances

Deploy DMZs for security zoning https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#deploy-dmzs-for-security-zoning

Avoid exposure to the Internet with dedicated WAN links https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#avoid-exposure-to-the-internet-with-dedicated-wan-links

Optimize uptime and performance https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#optimize-uptime-and-performance

HTTP-based Load Balancing https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#http-based-load-balancing

External Load Balancing https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#external-load-balancing

Internal Load Balancing https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#internal-load-balancing

Use global load balancing https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#use-global-load-balancing

Disable RDP/SSH Access to Azure Virtual Machines https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#disable-rdpssh-access-to-azure-virtual-machines

Enable Azure Security Center https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#enable-azure-security-center

Securely extend your datacenter into Azure https://docs.microsoft.com/en-us/azure/security/azure-security-network-security-best-practices#securely-extend-your-datacenter-into-azure

Operational

Monitor, manage, and protect cloud infrastructure https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#monitor-manage-and-protect-cloud-infrastructure

Manage identity and implement single sign-on https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#manage-identity-and-implement-single-sign-on

Trace requests, analyze usage trends, and diagnose issues https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#trace-requests-analyze-usage-trends-and-diagnose-issues

Monitoring services https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#monitoring-services

Prevent, detect, and respond to threats https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#prevent-detect-and-respond-to-threats

End-to-end scenario-based network monitoring https://docs.microsoft.com/en-us/azure/security/azure-operational-security-best-practices#end-to-end-scenario-based-network-monitoring

Azure Security Center https://azure.microsoft.com/en-us/blog/protect-virtual-machines-across-different-subscriptions-with-azure-security-center/

https://azure.microsoft.com/en-us/blog/how-azure-security-center-helps-detect-attacks-against-your-linux-machines/

New VM Type for single tenant isolated VM https://azure.microsoft.com/en-us/blog/new-isolated-vm-sizes-now-available/

Azure Active Directory

Azure Active Directory integration with SAP HANA https://docs.microsoft.com/en-us/azure/active-directory/active-directory-saas-saphana-tutorial?toc=%2fazure%2fvirtual-machines%2fworkloads%2fsap%2ftoc.json

Azure Active Directory integration with SAP Cloud Platform Identity Authentication https://docs.microsoft.com/en-us/azure/active-directory/active-directory-saas-sap-hana-cloud-platform-identity-authentication-tutorial?toc=%2fazure%2fvirtual-machines%2fworkloads%2fsap%2ftoc.json

Azure Active Directory integration with SAP Business ByDesign https://docs.microsoft.com/en-us/azure/active-directory/active-directory-saas-sapbusinessbydesign-tutorial?toc=%2fazure%2fvirtual-machines%2fworkloads%2fsap%2ftoc.json

Azure Active Directory integration with SAP Cloud for Customer for SSO functionality https://blogs.sap.com/2017/08/02/azure-active-directory-integration-with-sap-cloud-for-customer-for-sso-functionality/

S/4HANA environment – Fiori Launchpad SAML Single Sign-On with Azure AD https://blogs.sap.com/2017/02/20/your-s4hana-environment-part-7-fiori-launchpad-saml-single-sing-on-with-azure-ad/

Very good rollup article on Azure Networking https://blogs.msdn.microsoft.com/igorpag/2017/04/06/my-personal-azure-faq-on-azure-networking-v3/

Special thanks to Ravi Alwani for collating these links

6. New Microsoft Features for SAP Customers

Microsoft has released many new features for SAP customers:

Azure Site Recovery Azure-2-Azure – Support for Suse 12.x has been released! https://docs.microsoft.com/en-us/azure/site-recovery/azure-to-azure-support-matrix

Global vNet Peering – previously it was not possible to Peer vNets from other datacenters. This is now Generally Available in some datacenters and is being deployed globally. One of the biggest advantages of Global vNet Peering is that network traffic will be carried across the Azure network backbone.

https://blogs.msdn.microsoft.com/wushuai/2018/02/04/provide-cross-region-low-latency-service-based-on-azure-vnet-peering/

https://azure.microsoft.com/en-us/blog/global-vnet-peering-now-generally-available/

The new Standard Internal Load Balancer (ILB) is Availability Zone aware and has better performance than the regular ILB

https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits#load-balancer

https://github.com/yinghli/azure-vm-network-performance (scroll down to review performance)

SQL Server 2016 Service Pack 2 (SP2) released https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-server-2016-service-pack-2-sp2-released/

Linux customers are recommended to setup Azure Serial Console. This allows access to a Linux VM when the network stack is not working. This feature is the equivalent of an RS-232/COM port cable connection https://docs.microsoft.com/en-us/azure/virtual-machines/linux/serial-console

Azure Storage Explorer provides easier management of blob objects such as backups on Azure blob storage https://azure.microsoft.com/en-us/features/storage-explorer/

Azure now offers Trusted Execution Environment leveraging Intel Xeon Processors with Intel SGX technology. So far this is not tested with SAP yet, but may be validated in the future https://azure.microsoft.com/en-us/blog/azure-confidential-computing/

More information on new Network features can be found here https://azure.microsoft.com/en-us/blog/azure-networking-may-2018-announcements/

https://azure.microsoft.com/en-us/blog/monitor-microsoft-peering-in-expressroute-with-network-performance-monitor-public-preview/

7. New SAP Features

SAP has released a new version of SWPM. It is recommended to use this version for all new Installations. The tool can be downloaded from https://support.sap.com/en/tools/software-logistics-tools.html

1680045 - Release Note for Software Provisioning Manager 1.0 (recommended: SWPM 1.0 SP 23) https://launchpad.support.sap.com/#/notes/0001680045

Customers interested in automating SWPM can review 2230669 - System Provisioning Using a Parameter Input File https://launchpad.support.sap.com/#/notes/2230669

SAP has released new SAP Downwards Compatible Kernels. SAP has provided guidance to switch to using the new 7.53 kernel for all new Installations:

SAP recommends using the latest SP stack kernel (SAPEXE.SAR and SAPEXEDB.SAR), available in the Support Packages & Patches section of the SAP Support Portal https://launchpad.support.sap.com/#/softwarecenter.

For existing installations of NetWeaver 7.40, 7.50 and AS ABAP 7.51 this is SAP Kernel 749 PL 500. For details, see release note 2626990.
For new installations of NetWeaver 7.40, 7.50 and AS ABAP 7.51 this is SAP Kernel 753 PL 100. For details, see DCK note 2556153 and release note 2608318.
For AS ABAP 7.52 this is SAP Kernel 753 PL 100. For details, see release note 2608318.

2083594 - SAP Kernel 740, 741, 742, 745, 749 and 753: Versions and Kernel Patch Levels https://launchpad.support.sap.com/#/notes/2083594

2556153 - Using kernel 7.53 instead of kernel 7.40, 7.41, 7.42, 7.45, or 7.49 https://launchpad.support.sap.com/#/notes/0002556153

2350788 - Using kernel 7.49 instead of kernel 7.40, 7.41, 7.42 or 7.45 https://launchpad.support.sap.com/#/notes/0002350788

1969546 - Release Roadmap for Kernel 74x and 75x https://launchpad.support.sap.com/#/notes/1969546

https://wiki.scn.sap.com/wiki/display/SI/SAP+Kernel:+Important+News

8. Recommended Hana on Azure Disk Design Template

The Excel spreadsheet HANA-Disk-Design-Template-for-Azure contains a useful model template for customers planning to deploy Hana on Azure VMs.

The spreadsheet contains a sample Hana deployment on Azure M-series with details such as stripe sizes, Write Accelerator and other useful configuration settings

Further information and details can be found in the Azure documentation here: https://docs.microsoft.com/en-us/azure/virtual-machines/workloads/sap/hana-vm-operations

The spreadsheet is a sample only and should be adapted as required, for example the Availability Zone column will likely need to be updated.

Special thanks to Archana from Cognizant for creating this template

9. Disable 8.3 Filename Generation

Very old Windows releases were limited to filenames of 8.3 characters. Some applications that call very old file handling APIs can only reference files by their 8.3 format filenames.

Up to and including Windows Server 2016 all files with more than 8.3 characters will have a 8.3 format filename created.

This operation becomes very expensive if there are very large numbers of files in a directory. Frequently SAP customers will keep job logs or interface files on the /sapmnt share and the total number of files can reach hundreds of thousands.

It is recommended to disable 8.3 filename generation on all existing Windows servers and to include disabling 8.3 filename generation as part of the standard build of new Windows servers alongside steps such as removing Internet Explorer and disabling SMB v1.0.

662452 - Poor file system performance/errors during data accesses https://launchpad.support.sap.com/#/notes/662452

https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name-creation-on-ntfs-partitions

10. Hundreds of vCPU and 12TB Azure VMs Certified for SAP Hana Announced

In a blog by Corey Sanders Microsoft confirms a new generation of M-Series VMs supporting hundreds of vCPU and 12TB of RAM. The blog "Why you should bet on Azure for your infrastructure needs, today and in the future" announces the following:

1. Next Generation M-Series based on Intel Skylake CPU supporting up to 12TB of RAM

2. New Hana Large Instance TDIv5 appliances 6 TB, 12 TB and 18 TB

3. New Standard SSD based storage – suitable for backups and bulk storage https://azure.microsoft.com/en-us/blog/preview-standard-ssd-disks-for-azure-virtual-machine-workloads/

4. New smaller M-Series VMs suitable for non-production, Solution Manager and other smaller SAP Hana databases

https://azure.microsoft.com/en-us/blog/why-you-should-bet-on-azure-for-your-infrastructure-needs-today-and-in-the-future/

https://azure.microsoft.com/en-us/blog/offering-the-largest-scale-and-broadest-choice-for-sap-hana-in-the-cloud/

Miscellaneous Topics, Notes & Links

2343511 - Microsoft Azure connector for SAP Landscape Management (LaMa) https://launchpad.support.sap.com/#/notes/0002343511

Optimizing SAP for Azure https://www.microsoft.com/en-us/download/details.aspx?id=56819

Useful link on setting up LVM on Linux VMs https://docs.microsoft.com/en-us/azure/virtual-machines/linux/configure-lvm

Updated SQL Column Store documentation – recommended for all BW on SQL customers 2116639 - SQL Server Columnstore Documentation https://launchpad.support.sap.com/#/notes/0002116639

Installation Procedure for Sybase 16. 3 Patch Level 3 Always-on + DR on Suse 12. 3 – Recent Customer Proof of Concept

$
0
0

In recent months we saw several customers with large investments into Hana technologies approach Microsoft for information about deploying large mission critical SAP applications on Azure with the Sybase ASE database.

SAP Hana customers are typically able to deploy Sybase ASE at little or no additional cost if they have licensed Hana Database.

Many of the customers that have contacted Microsoft are shutting datacenters or terminating UNIX platforms and moving ECC or BW systems in the size range of 25-45TB DB volume to Azure. An earlier blog describes some of the requirements and best practices for VLDB migrations to Azure. https://blogs. msdn. microsoft. com/saponsqlserver/2018/04/10/very-large-database-migration-to-azure-recommendations-guidance-to-partners/

Until recently there was no simple documented straight forward installation procedure for a typical two node High-Availability pair with Synchronous replication and a third node with Asynchronous replication. This is quite a common requirement for SAP customers.

This blog is designed to supplement the existing SAP provided documentation and to provide some hints and additional information. The SAP Sybase team are continuously updating and improving the Sybase documentation, so it is always recommended to start with the official documentation and then cross reference this documentation. This document is based on real deployments from Cognizant and DXC. The latest version of Sybase & Suse were then installed in a lab test environment to provide screenshots

High Level Overview of Installation Steps

The high-level installation process for a 3 tier SAP Distributed Installation is:

  1. Read required OSS Notes, Installation Guides, Download Installation Media and the SAP on Sybase Business Suite documentation
    1. For SUSE Linux Release 12 with SP3 release note : https://www. suse. com/releasenotes/x86_64/SUSE-SLES/12-SP3/
  2. Provision Azure VMs with Suse for SAP Applications 12. 3 with Accelerated Networking Enabled
  3. Perform OS patching and preparation steps detailed below
  4. Run SWPM Distributed Install and install the ASCS Instance
  5. Export the /sapmnt NFS share
  6. Mount the /sapmnt NFS share on the Primary, Secondary and DR DB server
  7. Run SWPM Distributed Install and install the Primary DB Instance
  8. Run SWPM Distributed Install and install the Primary Application Server (Optional: add additional App servers)
  9. Perform Sybase Always-on preparation steps on Primary DB Instance
  10. Run setuphadr on Primary DB Instance
  11. Run SWPM Distributed Install and install the Secondary DB Instance
  12. Perform Sybase Always-on preparation steps on Secondary DB Instance
  13. Run setuphadr on Secondary DB Instance
  14. Run SWPM Distributed Install and install the DR DB Instance
  15. Perform Sybase Always-on preparation steps on DR DB Instance
  16. Run setuphadr on DR DB Instance
  17. Run post steps such as installing Fault Manager

Deployment Config

  1. Suse 12. 3 with latest updates
  2. Sybase 16. 03. 03
  3. SWPM version 22 or 23. SAP Kernel 7. 49 patch 500. NetWeaver ABAP 7. 50
  4. Azure Ev3 VMs with Accelerated Networking and 4 vcpu
  5. Premium Storage – each DB server has 2 x P20 disks (or more as required). App server has only a boot disk
  6. Official Sybase Documentation (some steps do not work, supplement with this blog) https://help. sap. com/viewer/product/SAP_ASE/16. 0. 3. 3/en-US
  7. Sample Response Files are attached here: Sybase-Sample-Response-Files. It is recommended to download and review these files
  8. Sybase Always-on does not leverage OS level clustering technologies such as Pacemaker or Windows cluster. The Azure ILB is not used. Instead the SAP workprocess is aware of the Primary and Secondary Sybase server. The DR node does not support automatic failover and this is a manual process to setup and configure SAP app servers to connect to the DR node
  9. This installation shows a "Distributed" installation. If the SAP Central Services should be highly available, follow the SAP on Azure documentation for Pacemaker
  10. Sybase Fault Manager is automatically installed on the SAP PAS during installation
  11. Be careful of Linux vs. Windows End of Life characters. Use Linux command cat -v response_file. rsIf ^M are seen then there are Windows EOL characters.

    Example:cat -v test. sh

    Output:

    Line 1 ^M

    Line 2 ^M

    Line 3 ^M

    (Note: CTRL+M is a single character in Linux, which is carriagereturn in Windows. This needs to be fixed before utilizing the file in Linux )

        To fix the issue

            $> dos2unix test. sh

            Output

                Line 1

                Line 2

                Line 3

  12. Hosts file configuration used for this deployment

    Example: <IP Address><FQDN> <SHORTNAME> <#Optional Comments>

    10. 1. 0. 9     sybdb1. hana. com     sybdb1    #primary DB

    10. 1. 0. 10   sybapp1. hana. com    sybapp1    #SAP NW 7. 5 PAS

    10. 1. 0. 11   sybdb2. hana. com     sybdb2        #secondary DB

    10. 1. 0. 12   sybdb3. hana. com    sybdb3        #tertiary DB for DR

    Common Prepare Steps on all Suse Servers

sudo zypper install -y glibc-32bit

sudo zypper install -y libgcc_s1-32bit

#these two glib 32bit are mandatory otherwise Always-on will not work

sudo zypper up -y

Note : It is mandatory to reboot the server if kernel patches are applied.

#resize the boot disk. The default linux root disk of 30GB is too small. Shutdown the VM and edit the disks in Azure Portal or Powershell. Increase the size of the disk to 60-100GB. Restart the VM and run the commands below. There is no benefit or advantage to provisioning an additional separate disk for a SAP application server

sudo fdisk /dev/sda

##delete the existing partition (this will not delete the data) and create [n] new primary [p] partition with defaults and write [w] config

sudo resize2fs /dev/sda2

sudo reboot

#Check Accelerated Networking is working

/sbin/ethtool -S eth0 | grep vf_

#Add these entries to the hosts file

sudo vi /etc/hosts

10. 1. 0. 9     sybdb1. hana. com     sybdb1    #primary DB

10. 1. 0. 10   sybapp1. hana. com    sybapp1    #SAP NW 7. 5 PAS

10. 1. 0. 11   sybdb2. hana. com     sybdb2        #secondary DB

10. 1. 0. 12   sybdb3. hana. com    sybdb3        #tertiary DB for DR

 #edit the waagent to create a swapfile

sudo vi /etc/waagent. conf

line to look for>>

ResourceDisk. EnableSwap=n

ResourceDisk. SwapSizeMB=

<<

Modify the above values Note : Swap size must be given in MB size only.

#enable the swapfile and set a size of 2GB or more. Example:

ResourceDisk. EnableSwap=y

ResourceDisk. SwapSizeMB=2000

Once done restart of the agent is necessary to get the swap file up and active.

sudo systemctl restart waagent

Other Services to be enabled and restarted are:

sudo systemctl restart nfs-server

sudo systemctl enable nfs-server

sudo systemctl status uuidd

sudo systemctl enable uuidd

sudo systemctl start uuidd

sudo systemctl status uuidd

##run sapcar and unpack SWPM 22 or 23

sapcar -xvf SWPM10SP22_7-20009701. SAR

SAP APP Server ASCS Install

sudo /source/swpm/sapinst SAPINST_REMOTE_ACCESS_USER=<os-user>

Open a web browser from a Management Server and enter the Suse os-user name and password https://10. 1. 0. 10:4237/sapinst/docs/index. html

##after install exportthe NFS Share for /sapmnt

sudo vi /etc/exports

#add this line /sapmnt*(rw,no_root_squash)

## open port 2049 for nfs on NSG if required [by default VMs on same vnet can talk to each other]

 sudo systemctl restart nfs-server

SAP DB Instance Install

##do common preparation steps such as zypper and hosts file etc

#create disks for sybase

sudo fdisk -l | grep /dev/sd

sudo fdisk /dev/sdc  -> n, p, w

sudo fdisk /dev/sdd  -> n, p, w

#It is generally recommended to use LVM and create pv, lv etc here so we can test performance later with striping additional disks.

Note: if multiple disk used in creating data / Backup / Log storage, make a necessary striping enabled to get optimal performance.

Example:

vgcreate VG_DATA /dev/sdc /dev/sdd

lvcreate -l 100%F VG_DATA -n lv_data -i 2 -I 256

sudo pvcreate /dev/sdc1 /dev/sdc1

sudo pvcreate /dev/sdc1 /dev/sdd1

sudo pvscan

sudo vgcreate syb_data_vg /dev/sdc1

sudo vgcreate syb_log_vg /dev/sdd1

sudo lvcreate -i1 -l 100%FREE -n syb_data_lvsyb_data_vg

sudo lvcreate -i1 -l 100%FREE -n syb_log_lvsyb_log_vg

sudo mkfs. xfs -f /dev/syb_data_vg/syb_data_lv

sudo mkfs. xfs -f/dev/syb_log_vg/syb_log_lv

sudo mkdir -p /sybase/source

sudo mkdir -p /log

sudo mkdir -p /sapmnt

sudo blkid | grep log

sudo blkid | grep data

Edit /etc/fstab and add the entries for the created disks.

Option 1:

Identify based on created volume group and lv details.

Ex: ls /dev/mapper/

And fetch the right devices

Ex: syb_data_vg-syb_data_lv

Add the the entries into /etc/fstab

sudo vi /etc/fstab

Add the lines.

/dev/mapper/syb_data_vg-syb_data_lv /hana/data xfs defaults,nofail 1 2

Option 2:

#now sudo su - to root user and run this (replace GUID) - cannot run this with sudo command, must be root

sudo su -

echo "/dev/disk/by-uuid/799603d6-20c0-47af-80c9-75c72a573829 /sybase xfsdefaults,nofail02">> /etc/fstab

echo "/dev/disk/by-uuid/2bb3f00c-c295-4417-b258-8de43a844e23 /log xfsdefaults,nofail02">> /etc/fstab

exit

sudo mount -a

sudo df -h

##create a directory for the source files.

sudo mkdir /sybase/source

## copy source files

sudo chmod 777 /sybase/source -R

## setup automount for /sapmnt

### - use auto mount not the "old" way sudo mount -t nfs4 -o rw sybapp1:/sapmnt /sapmnt

sudo mkdir /sapmnt

sudo vi /etc/auto.master

# Add the following line to the file, save and exit

+auto.master

/- /etc/auto.direct

sudo vi /etc/auto.direct

# Add the following lines to the file, save and exit

/sapmnt -nfsvers=4,nosymlink,sync sybapp1:/sapmnt

sudo systemctl enable autofs

sudo service autofs restart

sudo /sybase/source/swpm/sapinst SAPINST_REMOTE_ACCESS_USER=<os-user>

Open web browser and start installation

SAP PAS Install

##do same preparations as ASCS for zypper and hosts file etc

sudo /source/swpm/sapinst SAPINST_REMOTE_ACCESS_USER=<os-user>

https://10. 1. 0. 10:4237/sapinst/docs/index. html

AlwaysOn Install Primary

##do same preparations as ASCS for zypper and hosts file etc

Check that these libraries are installed otherwise Fault Manager will silently fail

sudo zypper install glibc-32bit

sudo zypper install libgcc_s1-32bit

##Login as syb<sid> - in this case the <sid> = ase

sybdb1 /sybase% whoami

sybase

sybdb1 /sybase% pwd

/sybase

sybdb1 /sybase% ls

ASEsourcesybdb1_dma.rssybdb1_setup_hadr. rs

sybdb1 /sybase% cat sybdb1_dma.rs | grep USER_INSTALL_DIR

USER_INSTALL_DIR=/sybase/ASE

sybdb1 /sybase%

sybdb1 /sybase% source/ASE1633/BD_SYBASE_ASE_16. 0. 03. 03_RDBMS_for_BS_/SYBASE_LINUX_X86_64/setup.bin -f /sybase/sybdb1_dma. rs -i silent

 

Note: if the command does not run put several <space> characters before the -i silent
Full path to setup.bin from ASE. ZIP file. Full path to response file otherwise it will fail with non-specific error message

 

 

##run this command to unlock the sa account. Command will fail if "-X" is not specified

isql-Usapsso -PSAPHana12345 -SASE -X

sp_locklogin sa, unlock

go

##If any errors occur review this note

2450148 - 'Warning: stopService() only supported on windows' message happened during HADR configuration -SAP ASE

##Run setuphadr after editing the response file based on Sybase documentation (sample response file is attached to this blog)

setuphadr /sybase/sybdb1_setup_hadr.rs

AlwaysOn Install Secondary

##do same preparations as ASCS for zypper and hosts file etc

Check that these libraries are installed otherwise Fault Manager will silently fail

sudo zypper install glibc-32bit

sudo zypper install libgcc_s1-32bit

##do same preparations as ASCS for zypper and hosts file etc

#create disks for sybase

sudo fdisk -l | grep /dev/sd

sudo fdisk /dev/sdc -> n, p, w

sudo fdisk /dev/sdd -> n, p, w

#only 1 disk, but created pv, lv etc here so we can test performance later with striping additional disks

sudo pvcreate /dev/sdc1 /dev/sdc1

sudo pvcreate /dev/sdc1 /dev/sdd1

sudo pvscan

sudo vgcreate syb_data_vg /dev/sdc1

sudo vgcreate syb_log_vg /dev/sdd1

sudo lvcreate -i1 -l 100%FREE -n syb_data_lvsyb_data_vg

sudo lvcreate -i1 -l 100%FREE -n syb_log_lvsyb_log_vg

sudo mkfs. xfs -f /dev/syb_data_vg/syb_data_lv

sudo mkfs. xfs -f/dev/syb_log_vg/syb_log_lv

sudo mkdir -p /sybase/source

sudo mkdir -p /log

sudo mkdir -p /sapmnt

sudo blkid | grep log

sudo blkid | grep data

#now sudo su - to root user and run this (replace GUID) - cannot run this with sudo command, must be root

sudo su -

echo "/dev/disk/by-uuid/799603d6-20c0-47af-80c9-75c72a573829 /sybase xfsdefaults,nofail02">> /etc/fstab

echo "/dev/disk/by-uuid/2bb3f00c-c295-4417-b258-8de43a844e23 /log xfsdefaults,nofail02">> /etc/fstab

exit

sudo mount -a

sudo df -h

sudo mount -a

sudo df -h

##create a directory for the source files.

sudo mkdir /sybase/source

## copy source files

sudo chmod 777 /sybase/source -R

## setup automount for /sapmnt

### - use auto mount not the "old" way sudo mount -t nfs4 -o rw sybapp1:/sapmnt /sapmnt

sudo mkdir /sapmnt

sudo vi /etc/auto.master

# Add the following line to the file, save and exit

+auto.master

/- /etc/auto.direct

sudo vi /etc/auto.direct

# Add the following lines to the file, save and exit

/sapmnt -nfsvers=4,nosymlink,sync sybapp1:/sapmnt

sudo systemctl enable autofs

sudo service autofs restart

sudo /sybase/source/swpm/sapinst SAPINST_REMOTE_ACCESS_USER=<os-user>

Stop the autofs and unmount the /sapmnt - sapinst will continue

The /sapmnt must be mounted again shortly after

##Login as syb<sid> - in this case the <sid> = ase

/sybase/source/ASE1633/BD_SYBASE_ASE_16. 0. 03. 03_RDBMS_for_BS_/SYBASE_LINUX_X86_64/setup. bin -f /sybase/sybdb2_dma. rs -i silent

isql-Usapsso -PSAPHana12345 -SASE -X

sp_locklogin sa, unlock

go

2450148 - 'Warning: stopService() only supported on windows' message happened during HADR configuration -SAP ASE

##Run setuphadr after editing the response file based on Sybase documentation (sample response file is attached to this blog)

setuphadr /sybase/sybdb2_setup_hadr.rs

Do not restart the RMA - this is not required

AlwaysOn FM Install & Post Steps

The Sybase documentation for these steps is here.

https://help. sap. com/viewer/efe56ad3cad0467d837c8ff1ac6ba75c/16. 0. 3. 3/en-US/286f4fc8b3ab4439b3400e97288152dc. html

The documentation is not complete. After doing the steps on the documentation link review this Note

1959660 - SYB: Database Fault Management

su - aseadm

rsecssfx put DB_CONNECT/SYB/DR_USER DR_admin -plain

rsecssfx put DB_CONNECT/SYB/DR_PASSWORD SAPHana12345

sybdb1:~ #su - aseadm

sybdb1:aseadm 1> rsecssfx put DB_CONNECT/SYB/DR_USER DR_admin -plain

sybdb1:aseadm 2> rsecssfx put DB_CONNECT/SYB/DR_PASSWORD SAPHana12345

sybdb1:aseadm 3>

sybdb2:~ #su - aseadm

sybdb2:aseadm 1> rsecssfx put DB_CONNECT/SYB/DR_USER DR_admin -plain

sybdb2:aseadm 2> rsecssfx put DB_CONNECT/SYB/DR_PASSWORD SAPHana12345

sybdb2:aseadm 3>

## Run AlwaysOn Tuning & Configuration script on Primary and Companion

isql -UDR_admin -PSAPHana12345 -Ssybdb1:4909

sap_tune_rs Site1, 16, 4

isql -UDR_admin -PSAPHana12345 -Ssybdb2:4909

sap_tune_rs Site2, 16, 4

sybdb2:aseadm 3> isql -UDR_admin -PSAPHana12345 -Ssybdb2:4909

1> sap_tune_rs Site2, 16, 4

2> go

TASKNAMETYPE

VALUE

----------------------- -----------------

------------------------------------------------------------

Tune Replication Server Start Time

Sun Apr 29 06:20:37 UTC 2018

Tune Replication Server Elapsed Time

00:07:11

TuneRSTask Name

Tune Replication Server

TuneRSTask State

Completed

TuneRSShort Description

Tune Replication Server configurations.

TuneRSLong Description

Waiting 180 seconds: Waiting Replication Server to fully up.

TuneRSTask Start

Sun Apr 29 06:20:37 UTC 2018

TuneRSTask End

Sun Apr 29 06:27:48 UTC 2018

TuneRSHostname

sybdb2

(9 rows affected)

## On the APP server only

sudo vi . dbenv. csh

setenv dbs_syb_ha 1

setenv dbs_syb_server sybdb1:sybdb2

## Restart the SAP App server

sapcontrol -nr 00 -function StopSystem ALL

sapcontrol -nr 00 -function StartSystem ALL

https://help. sap. com/viewer/efe56ad3cad0467d837c8ff1ac6ba75c/16. 0. 3. 3/en-US/41b39cb667664dc09d2d9f4c87b299a7. html

sybapp1:aseadm 6> rsecssfx list

|---------------------------------------------------------------------------------|

| Record Key | Status | Time Stamp of Last Update |

|---------------------------------------------------------------------------------|

| DB_CONNECT/DEFAULT_DB_PASSWORD | Encrypted| 2018-04-2903:07:11UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/DEFAULT_DB_USER | Plaintext| 2018-04-2903:07:07UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/DR_PASSWORD | Encrypted| 2018-04-2906:18:26UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/DR_USER | Plaintext| 2018-04-2906:18:22UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SADB_PASSWORD | Encrypted| 2018-04-2903:07:19UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SADB_USER | Plaintext| 2018-04-2903:07:14UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SAPSID_PASSWORD | Encrypted| 2018-04-2903:07:42UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SAPSID_USER | Plaintext| 2018-04-2903:07:37UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SSODB_PASSWORD| Encrypted| 2018-04-2903:07:27UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SSODB_USER| Plaintext| 2018-04-2903:07:22UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SYBSID_PASSWORD | Encrypted| 2018-04-2903:07:34UTC |

|---------------------------------------------------------------------------------|

| DB_CONNECT/SYB/SYBSID_USER | Plaintext| 2018-04-2903:07:30UTC |

|---------------------------------------------------------------------------------|

| SYSTEM_PKI/PIN | Encrypted| 2018-04-2722:36:39UTC |

|---------------------------------------------------------------------------------|

| SYSTEM_PKI/PSE | Encrypted (binary) | 2018-04-2722:36:45UTC |

|---------------------------------------------------------------------------------|

Summary

-------

ActiveRecords : 14 (Encrypted: 8, Plain: 6, Wrong Key: 0, Error: 0)

Defunct Records : 12 (180+ days: 0; Show: "list -withHistory", Remove: "compact")

## Run the Fault Manager Installation steps on the SAP PAS application server

sybapp1:aseadm 24> pwd

/sapmnt/ASE/exe/uc/linuxx86_64

sybapp1:aseadm 25> whoami

aseadm

sybapp1:aseadm 26> . /sybdbfm install

replication manager agent user DR_admin and password set in Secure Store.

Keep existing values (yes/no)? (yes)

SAPHostAgent connect user: (sapadm)

Enter password for user sapadm.

Password:

Enter value for primary database host: (sybdb1)

Enter value for primary database name: (ASE)

Enter value for primary database port: (4901)

Enter value for primary site name: (Site1)

Enter value for primary database heart beat port: (13777)

Enter value for standby database host: (sybdb2)

Enter value for standby database name: (ASE)

Enter value for standby database port: (4901)

Enter value for standby site name : (Site2)

Enter value for standby database heart beat port: (13787)

Enter value for fault manager host: (sybapp1)

Enter value for heart beat to heart beat port: (13797)

Enter value for support for floating database ip: (no)

Enter value for use SAP ASE Cockpit if it is installed and running: (no)

installation finished successfully.

Restart the SAP Instance - FM is added to the ASCS start profile

sybapp1:aseadm 32> sybdbfm status

fault manager running, pid = 4338, fault manager overall status = OK, currently executing in mode PAUSING

*** sanity check report (5)***.

node 1: server sybdb1, site Site1.

db host status: OK.

db status OK hadr status PRIMARY.

node 2: server sybdb2, site Site2.

db host status: OK.

db status OK hadr status STANDBY.

replication status: SYNC_OK.

AlwaysOn Install 3rd Node (DR) Async

Official SAP Sybase documentation and Links:

https://blogs. sap. com/2018/04/19/high-availability-disaster-recovery-3-node-hadr-with-sap-ase-16. 0-sp03/

Documentation https://help. sap. com/viewer/38af74a09e48457ab699e83f6dfb051a/16. 0. 3. 3/en-US

https://help. sap. com/viewer/38af74a09e48457ab699e83f6dfb051a/16. 0. 3. 3/en-US/6ca81e90696e4946a68e9257fa2d3c31. html

1. Install the DB host using SWPM in the same way as the companion host

2. Copy the companion host response file

3. Duplicate the section with all the COMP entries and add it at the bottom and rename at section of the newly copied COMPs to DR (for example). Leave the old COMP and PRIM entries as is.

4. Change the setup site to DR

5. All other entries from PRIM and COMP must remain the same since the setuphadr run for 3rd node needs to know about previous 2 hosts.

6. Execute setuphadr

Review the Sample Response File attached to this blog

##do same preparations as ASCS for zypper and hosts file etc

Check that these libraries are installed otherwise Fault Manager will silently fail

sudo zypper install glibc-32bit

sudo zypper install libgcc_s1-32bit

##do same preparations as ASCS for zypper and hosts file etc

#create disks for sybase

Note : when multiple disks are added for data/log/backup to create a single volume, use right striping method to get better performance

Example:

vgcreate VG_DATA /dev/sdc /dev/sdd

lvcreate -l 100%F VG_DATA -n lv_data -i 2 -I 256

(for log use –l 32 )

sudo fdisk -l | grep /dev/sd

sudo fdisk /dev/sdc -> n, p, w

sudo fdisk /dev/sdd -> n, p, w

#only 1 disk, but created pv, lv etc here so we can test performance later with striping additional disks

sudo pvcreate /dev/sdc1 /dev/sdc1

sudo pvcreate /dev/sdc1 /dev/sdd1

sudo pvscan

sudo vgcreate syb_data_vg /dev/sdc1

sudo vgcreate syb_log_vg /dev/sdd1

sudo lvcreate -i1 -l 100%FREE -n syb_data_lvsyb_data_vg

sudo lvcreate -i1 -l 100%FREE -n syb_log_lvsyb_log_vg

sudo mkfs. xfs -f /dev/syb_data_vg/syb_data_lv

sudo mkfs. xfs -f/dev/syb_log_vg/syb_log_lv

sudo mkdir -p /sybase/source

sudo mkdir -p /log

sudo mkdir -p /sapmnt

sudo blkid | grep log

sudo blkid | grep data

edit /etc/fstab and add the entries for the created disks.

Option 1 :

Identify based on created volume group and lv details.

Ex: ls /dev/mapper/

And fetch the right devices

Ex: syb_data_vg-syb_data_lv

Add the the entries into /etc/fstab

sudo vi /etc/fstab

Add the lines.

/dev/mapper/syb_data_vg-syb_data_lv /hana/data xfs defaults,nofail 1 2

Option 2 :

#now sudo su - to root user and run this (replace GUID) - cannot run this with sudo command, must be root

sudo su -

echo "/dev/disk/by-uuid/799603d6-20c0-47af-80c9-75c72a573829 /sybase xfsdefaults,nofail02">> /etc/fstab

echo "/dev/disk/by-uuid/2bb3f00c-c295-4417-b258-8de43a844e23 /log xfsdefaults,nofail02">> /etc/fstab

exit

sudo mount -a

sudo df -h

sudo mount -a

sudo df -h

Note: mount points are visible only when the folders are accessed in df –h command when auto mount is enabled.

##create a directory for the source files.

sudo mkdir -p /sybase/source

## copy source files

sudo chmod 777 /sybase/source -R

## setup automount for /sapmnt

### - use auto mount not the "old" way sudo mount -t nfs4 -o rw sybapp1:/sapmnt /sapmnt

sudo mkdir /sapmnt

sudo vi /etc/auto.master

# Add the following line to the file, save and exit

+auto.master

/- /etc/auto.direct

sudo vi /etc/auto.direct

# Add the following lines to the file, save and exit

/sapmnt -nfsvers=4,nosymlink,sync sybapp1:/sapmnt

sudo systemctl enable autofs

sudo service autofs restart

sudo /sybase/source/swpm/sapinst SAPINST_REMOTE_ACCESS_USER=<os-user>

Stop the autofs and unmount the /sapmnt - sapinst will continue

The /sapmnt must be mounted again shortly after

## Install the DMA on the DR Node

##Login as syb<sid> - in this case the <sid> = ase

source/ASE1633/BD_SYBASE_ASE_16. 0. 03. 03_RDBMS_for_BS_/SYBASE_LINUX_X86_64/setup. bin -f /sybase/sybdb3_dma. rs -i silent

isql-Usapsso -PSAPHana12345 -SASE -X

sp_locklogin sa, unlock

go

sybdb3 /sybase% uname -a

Linux sybdb3 4. 4. 120-92. 70-default #1 SMP Wed Mar 14 15:59:43 UTC 2018 (52a83de) x86_64 x86_64 x86_64 GNU/Linux

sybdb3 /sybase% whoami

sybase

##Run setuphadr after editing the response file based on Sybase documentation (sample response file is attached to this blog)

sybdb3 /sybase% setuphadr /sybase/sybdb3_setup_hadr.rs

AlwaysOn Testing & Useful Command Syntax

In the section below planned and unplanned failovers as well as monitoring commands are used.

It is recommended to review the Sybase documentation and also to review these SAP Notes:

1982469 - SYB: Updating SAP ASE with saphostctrl

1959660 - SYB: Database Fault Management

2179305 - SYB: Usage of saphostctrl for SAP ASE and SAP Replication Server

## Check if Fault Manager is running on the SAP PAS with this command

ps -ef | grep sybdbfm

executable in /usr/sap/<SID>/ASCS00/work

sybdbfm is copied to sybdbfm. sap<SID>_ASCS00

cd /usr/sap/<SID>/ASCS00/work

. /sybdbfm. sapASE_ASCS00 status

. /sybdbfm. sapASE_ASCS00 hibernate

. /sybdbfm. sapASE_ASCS00 resume

login as syb<sid> in this case sybase

## Login to the RMA

isql -UDR_admin -P<<password>> -SASE_RMA_Site1 -I DM/interfaces -X -w999

## to see all the components that are running

sap_version all

go

## to see the status of a replication path

sap_status path

go

## to see the status of resources

sap_status resource

go

## Login to ASE

The syntax "-I DM/interfaces" does a lookup in the Sybase AlwaysOn configuration database to find the host and TCP port

isql -UDR_admin -P<<password>> -SASE_Site1 -I DM/interfaces -X-w999

## to clear down the transaction log run this command

dump tran ASE with truncate_only

go

## to show freespace in DB

sp_helpdb ASE

go

## Transaction log backups are needed on all replicas otherwise the Trans Log will become full

## to start/stop/get info on Sybase DB (and all required components for Always on like RMA) - run this on the DB host

sudo /usr/sap/hostctrl/exe/saphostctrl -user sapadm -function StartDatabase -dbname ASE -dbtype syb

sudo /usr/sap/hostctrl/exe/saphostctrl -user sapadm -function StartDatabase -dbname ASE_REP -dbtype syb

## to get Sybase DB status

sudo /usr/sap/hostctrl/exe/saphostctrl -user sapadm -function GetDatabaseStatus -dbname ASE -dbtype syb

## to get Sybase DB replication status

sudo /usr/sap/hostctrl/exe/saphostctrl -user sapadm -function LiveDatabaseUpdate -dbname ASE -dbtype syb -updatemethod Check -updateoption TASK=REPLICATION_STATUS

## to send a trace ticket logon to RMA and execute these commands

sap_send_trace Site1

go

sap_status active

go

## during HADR testing leave tail running on the file /usr/sap/<SID>/ASCS00/work

tail -100f dev_sybdbfm

## to force a shutdown of the DB engine run the command below. Always-on will try to stop a normal shutdown of the DB

shutdown with wait nowait_hadr

go

## to do a planned failover from Primary to Companion DB the normal sequence is:

1. Failover from Primary to Companion

2. Drain logs from Primary to the DR site

3. Reverse Replication Route to start synchronization from the new Primary to the Companion and DR

-- There is a new command that does all these steps automatically:

/usr/sap/hostctrl/exe/saphostctrl -user sapadm - -function LiveDatabaseUpdate -dbname ASE -dbtype syb -updatemethod Execute -updateoption TASK=FAILOVER -updateoption FAILOVER_FORCE=1 -updateoption FAILOVER_TIME=300

## it is recommended to use this command. If there are errors check in the path /usr/sap/hostctrl/work for log files

##other useful commands:

## to disable/enable replication from a Site to all routes

sap_disable_replication Site1, <DB>

sap_enable_replication Site1,Site2,<DB>

## command to manually failover

sap_failover <primary>,<standby>,<timeout>, [force], [unplanned]

## Materialize is a "dump and load" to reinitialize Sybase Alwayson replica.

sap_materialize auto,Site1,Site2,master

sap_materialize auto,Site1,Site2,<SID>

Sybase How To & Links

Customers familiar with SQL Server AlwaysOn should note that although it is possible to take a DB or Log backup from a replica, these backups are not compatible between Primary <-> Replica databases. It is also a requirement to run transaction log backups on the replica nodes unlike SQL Server.

SAP Notes:

2134316 - Can SAP ASE run in a cloud environment? - SAP ASE

1554717 - SYB: Planning information for SAP on ASE

1706801 - SYB: SAP ASE released for virtual systems

1590719 - SYB: Updates for SAP Adaptive Server Enterprise (SAP ASE)

1959660 - SYB: Database Fault Management

2450148 - 'Warning: stopService() only supported on windows' message happened during HADR configuration -SAP ASE

2489781 - SAP ASE 16. 0 SP03 Supported Operating Systems and Versions

DBA Cockpit doesn't work by default after installation.

Setup DBA Cockpit as per:
2293673 - SYB: DBA Cockpit Correction Collection SAP Basis 7. 50

1605680 - SYB: Troubleshoot the setup of the DBA Cockpit on Sybase ASE

1245200 - DBA: ICF Service Activation for WebDynpro DBA Cockpit

For SUSE Linux Release 12 with SP3 release note : https://www. suse. com/releasenotes/x86_64/SUSE-SLES/12-SP3/

SAP Software Downloads https://support. sap. com/en/my-support/software-downloads. html

SWPM Download https://support. sap. com/sltoolset

Sybase Release Matrixhttps://wiki. scn. sap. com/wiki/display/SYBASE/Targeted+ASE+16. 0+Release+Schedule+and+CR+list+Information

Sybase Official Documentation https://help. sap. com/viewer/product/SAP_ASE/16. 0. 3. 3/en-US

Special thanks to Wajeeh Samdani from SAP Sybase Development in Walldorf

Special thanks to Cognizant SAP Cloud Team for their input and review of this blog

Content from third party websites, SAP and other sources reproduced in accordance with Fair Use criticism, comment, news reporting, teaching, scholarship, and research

Next on the menu – Extended Events Architecture

EduTECHAU 2018 Wrap Up

$
0
0

Every year, the EduTECH Australia conference brings together the best and brightest minds in classroom innovation to compare, share, and learn from one another. Here are some of the highlights and top insights that we at the Microsoft stand got to experience this year:

 

The future of learning: it’s predictive, and it’s personalised

For all the fun had, EduTECH has a serious mission: bringing Australian learning environments up to speed and empowering students with the latest digital technologies. In his plenary address that kick-started the conference, our VP of Worldwide Education Anthony Salcito painted a compelling picture of what that future classroom looks like – a predictive, personalised environment that automatically reads and caters to each individual student’s needs and learning pace. The key to getting there? It all comes down to mindset according to Anthony, who outlined how it just takes a few passionate educators to spark change across entire organisations.

 

 

Hear why Anthony believes the digital classroom’s focus must be the “creativity, critical thinking, and ingenuity” of our people – and not technology itself – in his interview with Sky News Australia.

 

 

We launched our guidebook for successful digital classrooms

EduTECH 2018 was where we unveiled Transforming Education, a guide to empower schools to take on digital transformation to help students unleash their talent – and how to ensure students and educators get the best results from the change, without making the most common mistakes. To write the book, we compiled nearly 30 years of research, evidence, and experience from academics and educators across Australia and the world, pulling together what they’d learnt about the skills students will need, and how to foster them as quickly and engagingly as possible.

The book’s greatest value comes from its practical guides on rolling out digital technology into the classroom – covering everything from choosing the right devices to curbing cyber-bullying and alleviating learning impediments with assistive technology. You can download the 139-page e-book here for free.

 

A lot of teachers revealed their crafty side

More and more educators are using games like Minecraft: Education Edition to teach complex concepts and empower their students’ creativity – so we thought we’d return the favour. Our Minecraft paper-craft competition put teachers’ dexterity to the test as they cut, folded, and constructed their way to real-life models of their favourite Minecraft characters:

 

 

With two especially crafty educators taking home a special prize each:

 

 

We made a lot of new friends – and caught up with many old ones

This year’s Microsoft stand featured more than just giant Minecraft: Education Edition figures: the latest Surface devices, mixed reality apps, and Office 365 features all made an appearance in live demonstrations, alongside talks from our experts on topics like “hacking STEM” and the secrets to better classroom collaboration.

 

 

Perhaps most valuable of all, however, were the discussions and meetings that happened in and around our space, where educators from all backgrounds came together with a common goal: discovering how to prepare their students better for life after school.

 

 

Thanks to everyone who stopped by, had a chat, and shared their thoughts on how digital can inspire in students the creativity, collaboration, and curiosity they need for tomorrow. We can’t wait to see you and hear your successes next year!

 

 

We’ve pulled together a full kit of resources to help you on your digital transformation journey, including discounts on Microsoft Surface devices, STEM learning packs, and research materials on the future of education. Download the full kit now at https://aka.ms/edutech2018 - don’t miss out!


Universal Resource Scheduling – Extensibility Documentation Released!!!

$
0
0

We are extremely excited to announce the availability of official Universal Resource Scheduling (URS) documentation for scheduling extensibility!

 

 

Universal Resource Scheduling documentation

 

 

First, check out the document that offers context and a deep overview of scheduling extensibility.

Next, there’s a sample walkthrough you can follow step-by-step. This will help you learn how to implement extensibility by walking through a sample implementation.

We’ve also provided documentation about the extensibility language syntax (UFX).

And finally, some extensibility-specific release notes.

 

For more general context on Universal Resource Scheduling, check out the following video.

 


You can find all sorts of additional content on the CRM Team blog; just search the term “Universal Resource Scheduling”! Amend your search with something like “Universal Resource Scheduling May 2018,” and you’ll see the blog post announcing the May 2018 updates, as an example.

 

Here is a shortcut to save you the 25 characters!

 

As always, we look forward to hearing your feedback, so please keep blogging, posting, Yammering on the Field Service partner group and the Project Service partner group, and submitting ideas. We are keeping an eye out for what is needed!

 

 

Happy Scheduling!

Dan Gittler, Principal Program Manager, Dynamics 365 engineering

Yona Low, Principal Software Engineer, Dynamics 365 engineering

 

A closer look at MSIX

$
0
0

With Windows 8 the new Application Model was introduced, and with Windows 10 came a radically changed servicing cycle. The way we utilize our devices, like Bring Your Own Device scenarios, or corporate owned devices that are not joined to the on premise Active Directory, to name 2 examples,  mandate the need to shift to a modernized IT methodology.

The image above illustrates the new Windows 10 Lifecycle. The Application model and lifecycle should nicely align with this. Previously when upgrading Windows  (re-)packaging of the applications, and application testing took considerable time. Many large enterprises have been using App-V to try to address this issue. An application packaged into the APPV format becomes more portable, can be streamed to the device, and could often be ported to the new OS without the need for repackaging.  MSIX will take this to the next level

 

MSIX uses the containerization technology available in Windows. As a containerized package the application will be delivered and dynamically integrated by the Operating System. Containerization separates the applications from the operating system.

This differs from the classical approach with scripted installations, MSI or InstallShield. These classic methods are often bound to a specific operating system and needed to be modified for every OS-Upgrade.

 

Moving applications towards this new format

Both the developer and the IT Pro are capable of creating MSIX:

  • The Developer will have Visual Studio built-in tooling
  • MSIX will provide tools to the IT Pro to be able to migrate all existing installers like .exe, .msi, .appv and .appx to MSIX, and the IT Pro will be able to configure the MSIX-package as needed or completely repackage the result to their Needs.

MSIX Features

As MSIX is a containerized packaging format, the application will be separated from the underlying Operating System. It will always be kept inside its container. The OS integrated client will manage deployment, configuration and execution. If needed, every container can be configured individually, and Windows will keep track of all the contents and integrations.

This leads to a nice feature set:

  • Clean removal of packages
  • No administrative credentials needed for integration
  • Block level differential update
  • Global/per user targeting of applications
  • Native integration into current and future Operating System versions
  • We'll dig down into more of the features in future Posts.

Where will MSIX fit currently?

With current deployment methods in place MSIX will basically fill the gap between locally installed and isolated applications. As MSIX is configurable it will fit anywhere at the level of isolation you define.

See you in future posts - any remarks, or questions can be placed in the comments below

Johannes Freundorfer & Ingmar Oosterhoff

 

Woodworking, the opposite of software development

$
0
0


While

waiting for the BoltBus
,
I met a former software developer,
who said that he's now a carpenter.
Specifically,
he makes furniture out of wood,
so a more precise term for his type of work would be something like
woodworking.



He says he quit software because
customers would keep making change requests on short notice,
even for features he was pretty sure they'd never actually use.



I asked him if his new job has the same problem.



He said, no, it's the opposite.



Nobody asks for new features for their bench or table or whatever.
They show him a picture of a 100-year-old table and say "Make me that."



Sometimes, a former customer will call and say,
"Hey, remember me? You made a table for me three years ago."
Do they want to modify the table? Nope.
"Can you make one exactly like it for my sister?"

Queries Hub Updates Generally Available

$
0
0

The New Queries Hub streamlines many of the existing features from the old hub and provides new capabilities to make it easier to get to the queries that are important to you. It is now generally available for VSTS customers and coming to TFS in the next major version.

Expanded Directory pages

The left panel for query navigation has been converted into its own set of pages that provide improved query management experiences.

These pages highlight new metadata for each query including:

  • The type of query
  • Its path within the hierarchy
  • Who last modified it
  • When it was last modified

Additionally, you now have access to the team favorite queries for all the teams you are a member of without having to change your team context in the navigation bar.

Find queries easily with a keyword filter

You can filter the queries listed on the Favorites and All directory pages, as well as the new folder view by entering a keyword in the filter box. This will help you find queries when you don’t remember the folder path.

 

Breadcrumb surfaces nearby queries

If you often run queries from the same folder, click the chevron next to the folder name. All the child queries will appear in the list, allowing you to select the query you want to run without needing to go back to the directory.

Bookmark folders for quick access

When you navigate to a query folder via the Breadcrumb, you will get a scoped view of all its contents. This page also has a unique URL which you can share with your team or bookmark for quick access in the future.

Get to favorite queries fast

To navigate quickly between your favorite queries, click Queries and favorite those queries of most interest to you. Then, you can use the drop-down menu in the query title to select queries you've favorited.

Other improvements

Besides the big changes listed above, here are some other improvements:

  • "Save as" now copies charts to the new query
  • Expanded work item filter options on the results grid
  • Access to who last ran the query and when over our REST APIs

 

 

Microsoft Soundscape: Lighting up the world with sound

$
0
0

By Amos Miller, Product Strategist, Microsoft AI + Research

Image of Alex and Maia crossing a busy intersection in downtown San Francisco. Maia is using Soundscape which has given her information about the layout of the intersection in 3D audio

Alex and Maia crossing a busy intersection in downtown San Francisco. Maia is using Soundscape which has given her information about the layout of the intersection in 3D audio.

A few years ago, when my daughter was only 5, we walked down the street after going to see a play at the Angel Theatre in London, looking for a place to get a bite. Dad and Kiddo, a normal setting. Kiddo had to do all the seeing because I am blind, and we never visited that area before, but soon enough we could smell pizza and locate the restaurant. It occurred to me, being a technologist at heart, that this experience was a little more intense than I would have liked, yet adding technology would have interfered with our experience.

Can we find a way to enhance one’s perception of their surroundings, enriching their awareness, and yet allow me to maintain my 120 percent attention on the experience I am having out and about with my kiddo? That’s the question that led us to wide ranging research and that more recently resulted in our first debut of the Microsoft Soundscape app that we launched at the start of March. The app runs on an iPhone,and using stereo headsets provides a three-dimensional audio image of the space around you as you walk.

The community has been extremely generous with some great feedback ever since we launched, and I wanted to share some of the key updates we’ve been working on based on that feedback.

Placing an audio beacon on an address
Instead of providing directions to a destination, Soundscape allows you to place a virtual audio beacon on the building or place you are heading to, and as you walk you can hear its location, so you can make your way to it. This is particularly helpful when that location is away from the street or in a wide-open area such as a pedestrian only area or a university campus. Initially, you could only place a beacon on a nearby point of interest. We have now added the ability to place a beacon on any address as well which was very well received. When setting a beacon, you can hit the “Search” button, and enter an address of your choice. Note, that you’ll need to hit Search again to refresh the list of possible addresses.

We have heard many and varied scenarios that folks want to use the beacon in, so stay tuned for more on this front.

Repeating and reviewing Soundscape callouts
We consider a job done well when, as a user, you have Soundscape running in the background and can choose what to pay attention to, i.e., so that walking down the street you can daydream, perhaps listen to a podcast, or talk with a friend. However, that means you may on occasion hear a callout that draws your attention and you may want to repeat it, or even set it as an audio beacon so you can walk over to that location. Soundscape will now display a history of callouts on the lower half of the screen. By default, that list is collapsed. You can expand the list and page through it to preview the callouts and act on them.

Using Soundscape in a vehicle
Most of our focus has been on using Soundscape while walking, however, many told us they value its use while in a car, bus or train. We have been doing some work to improve that experience, ensuring that you don’t get overwhelmed with callouts, yet have a good mental model of where you are and of key landmarks. And if you place a beacon on your destination while on a bus, you can get progress callouts as you get nearer. We continue to get feedback and will iterate on this scenario to get the balance right.

And the latest! U.S. voices
Yes, our wonderful British voice for Soundscape does have its fan base, however, many folks found her a little hard to understand. In our latest update you will find that you can now download alternative voices including male and female U.S. voices for Soundscape. Please note that the voice files can only be downloaded while you are on a WiFi connection.

Feedback and Engagement
We know that Soundscape represents a new concept of using sound in 3D to experience a space. To get this right we are eager to ensure we continue to engage the community. We will continue to update this blog to keep everyone informed on what we are working on and to ensure you have a way to communicate with us. soundscapefeed@microsoft.com gets to our inboxes directly and we look at every comment we receive.

We’ve also just set up a Facebook page which you can access at: https://www.facebook.com/microsoftsoundscape/ and don’t forget to visit our website at https://www.microsoft.com/en-us/research/product/soundscape/ where we have added a whole new section called "Tips and Tutorials" to help you get the most from Soundscape. And, please do let us know if there are other ways you feel might be easier to establish a constructive dialogue. We’d love to hear your ideas.

Finally, we look forward to connecting with many of you at the upcoming conventions in the U.S. We will have in-depth sessions both at the American Council of the Blind and National Federation of the Blind conventions, where you can learn all about our work, and how to use Soundscape like a pro.

Any questions, comments, and thoughts, just shout: soundscapefeed@microsoft.com

Thank you,
Amos and our amazing Soundscape team

Viewing all 29128 articles
Browse latest View live


Latest Images

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