• Enable .net framework 3.5 on windows server 2012 R2 VM created in Azure Environment

    To install SQL Server on Windows Server 2012 R2 VM Server in Azure, .net framework 3.5 should be installed first on the same Server.
    .net framework 3.5 can be installed using below two steps:
    1. DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:"D:\sxs"
    2. Enable the feature in the Add Roles and Features Wizard and specify path Source:"D:\sxs"

    Both the above steps require a source file which is a part of installation disk but in Azure VMs, Installation disk is not available to specify the source path.

    Below Error appear if installation fails

    Feature installation
    Installation of one or more roles, role service feature failed.
    The source files could not be found. Try installing the roles, role services, or features again in a new Add Roles and features Wizard session, and on the Confirmation page of the wizard, click "Specify an alternate source path" to specify a valid location of source files that are required for installation. The location must be accessible by computer account of the destination server
    .”

    Solution to enable .net framework 3.5 role in azure: Download and install latest updates using windows update on the Windows Server 2012 R2 VM Server in Azure.


    Follow the below steps to enable .net framework 3.5 feature on windows server 2012 R2 VM created in Azure Environment:
    Go to Control Panel\System and Security\Windows Update
    Check for Latest updates (note: Try to disable IE ESC under Server Manager, if unable to connect to internet for checking updates)
    Download and install the latest updates
    Restart Server if required.

    Once the Server is restarted, Enable .NET Framework 3.5 by using the Add Roles and Features Wizard under Server Manager following below steps:

    Open Server Manager and click on dashboard
    In right pane, Click on Add roles and features
    Click Next and choose Role-based or feature-based installation
    Click Next till feature page appear, check the box for .net framework 3.5 feature and click next
    Click install without specifying the alternate source path to install .net framework 3.5 features role.

    The above issue occurs in Azure because we cannot specify an alternate source path for a source file due to unavailability of installation disk So to enable .net framework 3.5 role in Windows Server 2012 R2 VM in Azure as a prerequisite for SQL Server or any other application, check and download latest windows updates on Windows Server 2012 R2 VM and then enable the role without using alternate source path.

  • Windows Azure Pack – Implementation Issue – G2 Hardware Profile could not be selected when create VM from sysprep vhdx

    Another minor issue I found while stabilizing Windows Azure Pack IaaS environment, it was noted that when try to create standalone virtual machine by selecting a sysprep vhdx from gallery in WAP you could not select any of the available Hardware Profiles configured with Virtual Machine Generation-2, while all Hardware Profiles with Generation-1 can be selected normally, so I decided to troubleshoot the issue by creating a new Hardware profile with the same configuration like the one with Generation-2 that I could not select but this time I configured it to be with Generation-2 and add it to the plan used by the same tenant admin I test with, I found the new hardware profile can be selected which make me assure that the issue from Generation-2 configuration in the hardware profile, so I decided to raise the issue to Windows Azure Pack product community, so I was notified that it is by design and the only way to create Generation-2 VM from WAP is to create it from template not from sysprep vhdx.

    So it is not an issue other than it is a restriction by design in current WAP version that prevent you to use Hardware Profile configured with Generation-2 VM when create standalone virtual machine using sysprep VHDX, and the only way to create Generation-2 virtual machine in WAP is to create it from template configured with Generation 2 VM settings.

    More Windows Azure Pack solved implementation issues can be found below:

    Good luck in your WAP implementation, and be tuned for more solved issues.

  • Windows Azure Pack – Implementation Issue – Failed to create VM from sysprep vhdx

    I went through another very interesting issue while WAP implementation during stabilizing a WAP production environment, although we able to create standalone virtual machine from different templates, in addition we able to create standalone virtual machine from Windows 2008 R2 sysprep vhdx, however the issue that WAP failed to create standalone virtual machine from Windows 2012 R2 sysprep vhdx, error shown in WAP was as follows:

    Virtual Machine Manager cannot detect a heartbeat from the specified virtual machine. Either the virtual machine is not running or Virtual Machine Additions is not installed. Verify the status of the virtual machine by connecting to it using Virtual Machine Remote Client (VMRC), and then try the operation again. Please contact your system administrator with this error ID.

    When check in SCVMM, error is as follows:

    Error (609)

    Virtual Machine Manager cannot detect a heartbeat from the specified virtual machine. Either the virtual machine is not running or Virtual Machine Additions is not installed.

    Recommended Action

    Verify the status of the virtual machine by connecting to it using Virtual Machine Remote Client (VMRC), and then try the operation again.

    Good luck in your WAP deployment, and hope that this post will help a lot of consultants while deploying Windows Azure Pack and Service Provider Foundation.

    What was little bit different in details of SCVMM error is that the step failed is called “Customize Virtual Machine

    So I decided to use the same sysprep vhdx to create a virtual machine from SCVMM, found that the VM creation goes without issues, which means that something send in Windows Azure Pack request who is responsible about the issue.

    After some discussions with folks, I realized that maybe something in the WAP plan responsible about virtual machine naming/renaming can be the source of issue, so I decided to go through all the plan settings in WAP admin site, and change the custom settings by selecting “Use template to define computer name” check box as shown in screenshot below,

    clip_image002

    Once saved the plan, log out & log in to tenant admin site again with one of the tenant administrators accounts, I able to create new VM from the same sysprep vhdx that was giving the error.

    So, although error is generated from SCVMM but issue source was from Windows Azure Pack plan, once plan settings be fixed issue was solved.

    More Windows Azure Pack solved implementation issues can be found below:

    Good luck in your WAP implementation, and be tuned for more solved issues.

  • TCP CICS transactions integration and automated rollback

    Introduction

    Integrating BizTalk applications with Mainframe programs can be done using many methods. One of the most convenient methods is to use the TCP CICS integration model using the standard listener TRM or enhanced listener ELM program link. Both these methods requires installation of a concurrent server (listener) on the Mainframe to handle TCP and sockets communication. Host Integration Server comes packed with an example concurrent server. One problem that you might face when using this model is the case of a processing of a transaction on the Mainframe and while this processing is happening on the Mainframe the socket communication fails. In this case you will face a condition where the transaction is already done on the Mainframe but the application on BizTalk is not aware that the transaction is performed so if there is no mechanism against this then the same transaction can be executed twice.

    Discussion & Resolution

    A resolution of this problem is to edit the concurrent server program on the Mainframe to issue a CICS ABEND in the case of a socket failure. This insures that if the response is not delivered to the application then the transaction would be rolled back on the Mainframe, this though requires that all Mainframe programs to be used should not implement any SYNCPOINT.
    To change the HIS provided sample for the concurrent listener to implement this approach the following should be added to the program MSCOMTI.cbl in the “STANDARD-LISTENER” procedure and after processing the “WRITE-BUF-TO-SOCKET” procedure.

                          PERFORM WRITE-BUF-TO-SOCKET THRU

                                  WRITE-BUF-TO-SOCKET-EXIT

                          IF CHILD-SERVER-ERROR < 0 THEN

                             MOVE SS-CLOSE-SOCKET TO NEXT-STATE

                             MOVE 'Y'             TO ABEND-STAT

                          ELSE

    Then within the same procedure after the loop ends add the following code to issue the ABEND.

    IF ABEND-IS-REQUIRED THEN

                  MOVE TP-ABEND-1 TO TRACE-ID

                  PERFORM TRACE-POINTS THRU TRACE-POINTS-EXIT

                   EXEC CICS ABEND ABCODE('ABC') END-EXEC

    END-IF.

    This will make sure that the transaction on the Mainframe will rollback if no response can be delivered to the application due to any connectivity problems.
    Full source of the customized listener is here.
  • Windows Azure Pack – Implementation Issue – ACTIVE (OUT OF SYNC)

    Recently I faced an issue while building a complete Windows Azure Pack solution to provide Infrastructure as a Service (IaaS), initially everything was working properly while I was doing testing after each step of WAP deployment, so I able to create three subscriptions, created some virtual machines using the created subscriptions, and able to access these virtual machines, then after I finish the whole deployment and configure all post deployment activities found an issue when try to create any new subscription that shows subscription status as “ACTIVE (OUT OF SYNC)” with detailed error as below:

    image

    “One or more errors occurred while contacting the underlying resource providers. The operation may be partially completed. Details: Failed to create subscription. Reason: Message : An error occurred while processing this request., Innermessage: <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01//EN””https://www.w3.org/TR/html4/strict.dtd”> <HTML><HEAD><TITLE>Bad Request</TITLE> <META HTTP-EQUIV=”Connect-Type” Content=”text/html;charset=us-ascii”></HEAD> <BODY><h2>Bad Request – Invalid Hostname</h2> <hr><p>HTTP Error 400. The request hostname is invalid.</p> </BODY></HTML>

    So I start troubleshooting with below steps:

    1. First I check in VMM Console, under “Settings/Security/User Roles” and found that the new subscription administrator that should be created while creating the new subscription is not there (except admin users for the 3 subscriptions I created in the initial testing without issues), which means for me that the request did not reach to SCVMM, so the issue is almost in Service Provider Foundation (SPF).
    2. Follow the troubleshooting steps document her in very good way http://blogs.technet.com/b/privatecloud/archive/2013/11/08/troubleshooting-windows-azure-pack-spf-amp-vmm.aspx however issue was not solved and still get the same error.
    3. I start looking at each WAP component to be sure that same level of accumulative update is applied on each WAP role (Internal WAP Tier, External WAP Tier, SCVMM, SPF), but found all are the same.
    4. Start taking more deeper step and start enable debugging in both SCVMM and SPF follow steps documented here http://support.microsoft.com/kb/2850280 & here http://support.microsoft.com/kb/2913445/en-us , and the results from this debugging that I become 100% that the issue is in SPF not in SCVMM, simply because the error is logged in SPF only, part of log file on SPF after enable debugging showing the same error is below:

    [1]0AB8.0ACC::‎2015‎-‎01‎-‎08 15:39:33.118 [Microsoft-ServiceProviderFoundation]Component: Provider     Activity [WebAuthentication Call, id {f13f5bc4-d696-4beb-be36-60fc99d01c82}]  Parent activity [none, id {00000000-0000-0000-0000-000000000000}]    Elapsed: 0ms  Context: {9a298a09-5e36-4e1f-b163-6e91f54a8b14}    Message : An error occurred while processing this request., InnerMessage: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">  <HTML><HEAD><TITLE>Bad Request</TITLE>  <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>  <BODY><h2>Bad Request - Invalid Hostname</h2>  <hr><p>HTTP Error 400. The request hostname is invalid.</p>  </BODY></HTML>

    • Then I followed some recommendations from communities to try to change the Service Provider registration to be done using SPF Local user, this local user should be created with the same name & password on all SPF servers, however after I did this change I found same issue still there.

    • Lately I start tracking all changes done in the environment after the first test that was succeeded before to create new subscriptions, and start rollback one of these changes which is replacing the self-signed certificate for SPF web site with a new certificate issued from internal enterprise CA, so after roll-back and return SPF website to use self-signed certificate found the issue is no more there, and I can create new subscription in addition I able to sync all the subscriptions created while troubleshooting the issue.

    So it was Service Provide Foundation issue, because of replacing the self-sign certificate with new certificate from enterprise CA, although all WAP components are member in the same Active Directory AD Domain with the CA in the same AD, the most important thing is that I went through all troubleshooting techniques related to Windows Azure Pack to solve the issue and this will save me time in future Windows Azure Pack deployments.

    Good luck in your WAP deployment, and hope that this post will help a lot of consultants while deploying Windows Azure Pack and Service Provider Foundation.

    More Windows Azure Pack solved implementation issues can be found below: