Coretek Services recognized as Microsoft Azure Expert Managed Service Provider

2018-07-25T12:33:46+00:00 July 12th, 2018|Azure, blog, Cloud, Microsoft, Microsoft Infrastructure, Micrsoft Cloud Solution Provider, News|

New program gives clients confidence that they are selecting a highly qualified Microsoft Azure expert with proven results.

July 13, 2018–Farmington Hills, MI– Coretek Services (Coretek), an industry-leading IT professional services and consulting firm, announced today that the company has been named one of only thirty-three Microsoft Azure Expert MSPs.

“In this fast-moving technology environment, it is essential to find experienced partners in the disciplines you need,” said Ron Lisch, Coretek’s President and Chief Executive Officer. “The Microsoft Azure Expert MSP program lets clients and prospects know that Coretek has demonstrated to Microsoft the skills and capabilities to deliver upon our promises.”

Technology focus

As an IT consulting company, systems integrator and “born in the cloud” managed services provider, Coretek delivers high value, innovative solutions to solve our customers toughest challenges when their jobs are on the line.

Ray Jaksic, Coretek Chief Technology Officer, said, “Coretek has made the decision early on to invest in our cloud delivery capability. We assessed the different cloud platforms and made the decision to go all-in with Microsoft Azure. The ever-growing set of services allows us to identify new ways to solve our client’s challenges.”

Provider excellence

As customers move to the public cloud with increasing pace, they need partners with a deep level of cloud expertise and experience to guide them. Inclusion in the Microsoft Azure Expert MSP program is awarded to partners that meet a stringent set of requirements, including verified proof of excellence in customer delivery and technical expertise, and the successful completion of an independent audit of their managed services, people, processes, and technologies. Only the most high-fidelity cloud managed service providers are awarded the Azure Expert MSP badge, intended to give customers confidence when selecting a partner to help them meet their digital transformation goals.

Gavriella Schuster, Microsoft

“We are excited to see companies like Coretek demonstrate a high level of expertise with Microsoft Azure,” said Gavriella Schuster, corporate vice president, One Commercial Partner, Microsoft Corp. “The Azure Expert MSP program recognizes some of our top partners.”

Information technology adoption is only as good as it is perceived through the eyes and the hands of the end user. That is why in this mobile-first, cloud-first world, Coretek is obsessed with end users’ experience. The company has seen its clients achieve solid return on investment on their use cases in industries such as healthcare, manufacturing, and financial services.

About Coretek Services

Coretek Services is an industry-leading Systems Integration and IT Consulting firm that delivers high value and innovative solutions.  Coretek works with clients to custom-design an IT architecture based on each clients’ unique requirements.  The solution encompasses server and desktop virtualization, optimization of a virtual desktop environment, cloud desktop, mobile device management, and infrastructure consulting and project management.  Coretek’s goal is to help clients achieve Project Success. No Exceptions! For more information, visit www.coretek.com.

Contact

Coretek Services
Paula Gwyn, 248-684-9400 X211
Chief Marketing Officer
paula.gwyn@coretek.com

Coretek Services recognized as Microsoft Azure Expert Managed Service Provider

2018: The year you migrate to the cloud?

2018-01-23T23:52:54+00:00 January 24th, 2018|Azure, blog, Cloud, Disaster Recovery|

Welcome to 2018, where the rush to the cloud shows no sign of slowing down.  New Azure features are being released so quickly that the Azure marketplace seems to show new services every day.  I sometimes see new features arrive between button clicks!  It is probably safe to say that we are in the “majority adopters” phase of the traditional technology adoption curve for the cloud.

The big question for you is whether this is the year to migrate your data center assets to the cloud.

Lift and Shift vs. Application Modernization

The first thing you need to consider is whether you want to “lift and shift” your infrastructure or start an application modernization project to move your digital assets to the cloud.

Lift and Shift Methodology — This method consists of cloning your server infrastructure to the cloud and transferring the data to the new servers.  The new servers are cloned as virtual machines (VMs) operating as they did in your on-premises infrastructure.  The plan detailed below is going to focus on this methodology.

Application Modernization Methodology — This method requires you to refactor your applications for the cloud.  There are significant cost savings available long term using this method; however, the conversion cost will be much higher than a straight “lift and shift” to the cloud.

The “Lift and Shift” Plan

Azure provides several tools including Azure Migrate (public preview) and Azure Site Recovery (ASR) to execute the migration to the cloud, but you need to understand what you are trying to accomplish.  The following is a typical plan for one of these projects:

  • Assessment – Use tools to collect data in manual or automatic ways to perform a documented analysis.  Data that should be collected and analyzed include the server function, operating system, cores (or CPUs), memory, disk sizes, and network performance.
  • Selection and Planning – Once the assessment is complete, you can then select the servers or workloads that are good candidates for migration.  You should also identify any server issues such as unsupported operating systems, large disk sizes, or incompatible disk technologies.  For example, disk sizes over 4TB cannot be cloned using ASR as of this writing.  Items like available network bandwidth, maintenance windows, and business objectives need to be considered before publishing your plan.
  • Environment Preparation – With any on-premises migration to the cloud, network constraints may need to be implemented (such as QoS and firewall changes for future replication). The target also needs to be created in Azure consisting of the new network, storage, and virtual private networks.  If you are using ASR, an on-premises process server needs rollout.  In this stage, I also recommend implementing a monitoring solution where you can watch the process server health and network bandwidth.
  • Replication – This is probably the longest and most tedious part of this entire project.  At this stage, the data is replicated using the selected migration tool.  Like any backup or disaster recovery solution, the longest part of synchronization is the initial data replication.  You do not merely want to replicate all the servers at once because you could significantly affect your available network bandwidth and that could make you unpopular.  When your end users come to find you with their torches and pitchforks, that’s very bad.  I have seen in the migrations that I have managed that doing more than 2-3 initial replications at a time is the limit.  Once a server has completed the initial replication, then you can add others because the completed servers need incremental changes over time.
  • Cutover – You are almost there!  Now comes the maintenance windows where you can migrate to Azure and then disable the original server.  Depending on your project and business needs, you can either do it all at once, or break up the list based on workloads and other factors.  Doing the migrations in multiple, distinct sets reduces stress.

Here at Coretek we do many of these projects every year.  We can definitely help you with your migration to the Azure cloud!  Just give us a call.

Coretek Wins! – 2018 Citrix Innovation Award for Partners

2018-01-10T01:32:24+00:00 January 10th, 2018|Azure, blog, Citrix, Cloud, Microsoft, Micrsoft Cloud Solution Provider|

We won the 2018 Citrix Innovation Award for Partners!!

Thank so much to Wolverine Worldwide, all the people that voted for us, and of course all the awesome Coretek teammates that made it happen.  Much more to come!

See the details here:

https://www.citrix.com/go/innovation-award/partner-innovation.html

Amazing Video for 2018 Citrix Innovation Award Nomination…

2018-01-07T15:17:04+00:00 January 7th, 2018|Azure, blog, Citrix, Cloud, Micrsoft Cloud Solution Provider|

As nominees for the 2018 Citrix Innovation Award, Coretek recently had a video crew come through the main office.  The crew was there to interview, get scenery footage, and generally get the “vibe” of how we do what we do.

In the video, we get the overview of the amazing work we did with Wolverine Worldwide, helping them solve what is quite a common modern problem in an uncommon and innovative way.  And it is also really cool to see my fellow Coretekers “movie” extras!

Here is the completed video:

Please take a moment to watch the extremely cool video, and vote for Coretek for the 2018 Citrix Innovation Award Nomination at this link.  Then, if you like what you see, drop us a line and get Coretek and Citrix working to help you do what you do more efficiently!

Coretek and Citrix: Delivering Confidence in the Cloud

2017-12-14T19:08:19+00:00 December 14th, 2017|Azure, blog, Citrix, Cloud, Home Page, Micrsoft Cloud Solution Provider, Mobility, News, Virtualization|

FARMINGTON HILLS, MI – December 14, 2017 – UPDATE on Citrix Innovation Award 2018.  You’ll have your chance to vote for Coretek and the Americas, January 2-9.  Details to follow soon.  Be a part of the excitement!

Click here for the latest info and pictures for the 2018 Citrix Innovation Award…get ready to vote for Coretek early January!

 

Office 365 Integration with SCCM…..

2017-11-20T02:02:27+00:00 November 20th, 2017|Azure, blog, Configuration Manager, Micrsoft Cloud Solution Provider, Office 365, System Center|

Deploying Office or Office 365 has traditionally been a challenge in most corporate environments.  The file types have changed, components have been added/removed, content size isn’t the most manageable, and the amount of business processes that rely on the productivity suite of products requires close management of the deployment to ensure that work can continue once the newer version is deployed.

Microsoft System Center Configuration Manager (SCCM) — as of version 1602 — integrates with Office 365 to offer the ability to deploy the Office 365 productivity suite natively with SCCM.  The feature is called Office 365 Client Management and is found in the Software Library of the SCCM Console.  Here’s a snapshot of what it looks like:

On the left, you have your Office 365 Folder with Office 365 Updates included.  When in the folder view, you can see a summary of the number of O365 clients and their versions.  If you notice the scroll-bar indicates there’s more to see…

The different sections can be summarized as such:

  1. Number of O365 Clients in total
  2. The breakdown and summarization of the different versions in the environment
  3. A button which will initiate a wizard to create an O365 client deployment package
  4. A chart indicating the number of systems running different languages of O365
  5. A button to create an Automatic Deployment Rule
  6. Another option to create client settings (These are standard SCCM Client settings, nothing special pertaining to O365)
  7. The number of systems configured to the different update Channels for Office 365 client management
  8. If ADRs were created, they would show in this section

I’ve had some great experiences working with the Office 365 Client management integration with SCCM.  The ability to create a single package to support multiple different languages has taken my packaging time and reduced it to minutes.

In addition to providing a built-in package creation utility, SCCM also manages and services O365 packages moving forward.  The updates are all provided through SCCM’s native Software Update technology but are provided to you in a separate node in the console so that you can view only the updates pertaining to the 365 clients in your environment.  This makes it very easy to identify required and installed updates for your managed systems.

As for what’s needed to manage updates for O365 within SCCM:

Requirements for using Configuration Manager to manage Office 365 client updates

To enable Configuration Manager to manage Office 365 client updates, you need the following (summarized from link above):

  • System Center Configuration Manager, update 1602 or later
  • An Office 365 client – Office 365 ProPlus, Visio Pro for Office 365, Project Online Desktop Client, or Office 365 Business
  • Supported channel version for Office 365 client. For more details, see Version and build numbers of update channel releases for Office 365 clients
  • Windows Server Update Services (WSUS) 4.0  — You can’t use WSUS by itself to deploy these updates. You need to use WSUS in conjunction with Configuration Manager
  • On the computers that have the Office 365 client installed, the Office COM object is enabled

All in all, I have to say that I’m very impressed with the integration of Office 365 Client Management into SCCM.  SCCM has been a very powerful tool and to add the ability to manage the productivity suite natively in SCCM will ensure that admins in large environments can spend more time managing than packaging.

Good Job Microsoft!

Azure – Which Public and Private IPs are In Use and By Which VM…?

2017-08-03T03:01:59+00:00 August 10th, 2017|Azure, blog, Cloud, PowerShell|

In my recent thread of simple-but-handy Azure PowerShell tools, I realized one important thing was missing: A tool that grabbed all the public & private IP addresses in use by VMs (plus some additional info).

I searched around, and found an old post by fellow Coreteker Will Anderson, where he’d solved the problem.  Unfortunately, PowerShell had changed since then, and his suggestion didn’t work anymore.  Fortunately however, Will Anderson is now on the other end of Skype from me, so after a quick explanation he gave me some advice on how to fix it within the new PowerShell behavior.  And of course, it would just be wrong not to post if back to the community…

So here is my script, with help from Will and another blogger Rhoderick Milne, where I found some additional input.  When executed, this script writes some quick handy info to screen, as in this lab example:

…which might be enough for you if you just want a quick review, but then it also dumps my preferred info for each VM to a csv, as follows: “Subscription”, “Mode”, “Name”, “PublicIPAddress”, “PrivateIPAddress”, “ResourceGroupName”, “Location”, “VMSize”, “Status”, “OsDisk”, “DataDisksCount”, “AvailabilitySet”

Just paste the below  into a script file, change the subscription name in the variable to your choice, and execute.  If you don’t know which subscription name to use, you can always run “Get-AzureRmSubscription” after you run “Login-AzureRmAccount” and find it in the list.  So grab the code, hack at it, and let me know where you take it!

# Thanks for help from Will Anderson, Rhoderick Milne for the assistance.
#
# Get Date; Used only for output file name.
$Date = Get-Date
$NOW = $Date.ToString("yyyyMMddhhmm")
#
# Variables
$MySubscriptionName = "Windows Azure  MSDN - Visual Studio Premium"
$VmsOutFilePath = "C:\temp"
$VmsOutFile = "$VmsOutFilePath\VmList-$NOW.csv"
#
$NeedToLogin = Read-Host "Do you need to log in to Azure? (Y/N)"
if ($NeedToLogin -eq "Y")
{
  Login-AzureRmAccount
  Select-AzureRmSubscription -SubscriptionName $MySubscriptionName
}
elseif ($NeedToLogin -eq "N")
{
  Write-Host "You must already be logged in then.  Fine. Continuing..."
}
else
{
  Write-Host ""
  Write-Host "You made an invalid choice.  Exiting..."
  exit
}
#
$vms = Get-AzureRmVm 
$vmobjs = @()
foreach ($vm in $vms)
{
  #Write-Host ""
  $vmname = $vm.name
  Write-Host -NoNewline "For VM $vmname... "
  Start-Sleep 1
  $vmInfo = [pscustomobject]@{
      'Subscription'= $MySubscriptionName
      'Mode'='ARM'
      'Name'= $vm.Name
      'PublicIPAddress' = $null
      'PrivateIPAddress' = $null
      'ResourceGroupName' = $vm.ResourceGroupName
      'Location' = $vm.Location
      'VMSize' = $vm.HardwareProfile.VMSize
      'Status' = $null
      'OsDisk' = $vm.StorageProfile.OsDisk.Vhd.Uri
      'DataDisksCount' = $vm.StorageProfile.DataDisks.Count
      'AvailabilitySet' = $vm.AvailabilitySetReference.Id }
  $vmStatus = $vm | Get-AzureRmVM -Status
  $vmInfo.Status = $vmStatus.Statuses[1].DisplayStatus
  $vmInfoStatus = $vmStatus.Statuses[1].DisplayStatus
  Write-Host -NoNewline "Get status `("
  if ($vmInfoStatus -eq "VM deallocated")
  {
    Write-Host -ForegroundColor Magenta -NoNewline "$vmInfoStatus"
  }
  elseif ($vmInfoStatus -eq "VM stopped")
  {
    Write-Host -ForegroundColor Yellow -NoNewline "$vmInfoStatus"
  }
  elseif ($vmInfoStatus -eq "VM generalized")
  {
    Write-Host -ForegroundColor Gray -NoNewline "$vmInfoStatus"
  }
  else
  {
    Write-Host -ForegroundColor White -NoNewline "$vmInfoStatus"
  }
  Write-Host -NoNewline "`)... "
  $VMagain = (Get-AzureRmVm -ResourceGroupName $vm.ResourceGroupName -Name $vmname)
  $NifName = ($VMagain.NetworkProfile[0].NetworkInterfaces.Id).Split('/') | Select-Object -Last 1
  $MyInterface = (Get-AzureRmNetworkInterface -Name $NifName -ResourceGroupName $VMagain.ResourceGroupName).IpConfigurations
  $PrivIP = $MyInterface.privateipaddress
  $vmInfo.PrivateIPAddress = $PrivIP
  Write-Host -NoNewline "Getting Private IP `($PrivIP`)... "
  try
  {
    $PubIPName = (($MyInterface).PublicIPAddress.Id).split('/') | Select-Object -Last 1
    $vmPublicIpAddress = (Get-AzureRmPublicIpAddress -Name $PubIPName -ResourceGroupName $Vmagain.ResourceGroupName).IpAddress 
    Write-Host -NoNewline "Getting public IP `("
    Write-Host -ForegroundColor Cyan -NoNewline "$vmPublicIpAddress"
    Write-Host -NoNewline "`)... "
    $vmInfo.PublicIPAddress = $vmPublicIpAddress
  }
  catch
  {
    Write-Host -NoNewline "No public IP... "
  }
  Write-Host -NoNewline "Add server object to output array... "
  $vmobjs += $vmInfo
  Write-Host "Done."
}  
Write-Host "Writing to output file: $VmsOutFile"
$vmobjs | Export-Csv -NoTypeInformation -Path $VmsOutFile
Write-Host "...Complete!"



I hope that helps!

New Series – Using PowerShell, Azure Automation, and OMS

2017-08-11T19:15:26+00:00 August 3rd, 2017|Azure, blog|

I’ve just recently begun releasing my new blog series on PowerShell.org – Using PowerShell, Azure Automation, and OMS.  This series is designed to help you become familiar with using Microsoft’s Operations Management Suite’s alerting capability to trigger runbooks in Azure Automation.  I highly encourage you to read through the series as it releases over the next couple of weeks.

Part I – Azure Automation Account Creation and Adding Modules – This article walks you through creating a new Azure Automation account and uploading your own custom modules to Azure for use in your on-prem and cloud-based solutions.

Part II – Configuring Azure Automation Runbooks And Understanding Webhook Data – Walks you through creating your first Azure Automation runbook and breaking down Operations Management Suite’s Webhook data.

Part III – Utilizing Webhook Data in Functions and Validate Results – Takes you through utilizing OMS Webhook data and passing it to your functions in Azure Automation to automatically remediate issues for you.

I’ll be updating the links here as the articles go live.  I hope you enjoy the series!

 

Which Azure Plan is Right for You?

2017-07-27T00:47:04+00:00 July 27th, 2017|Azure, blog, Cloud, Microsoft, Microsoft Infrastructure, Micrsoft Cloud Solution Provider, Office 365|

As you start to explore the world of Microsoft Azure Cloud Services, you will start to see there are many options.  Let’s discuss the three types of Microsoft programs for you to purchase.

#1 – Pay-As-You-Go Subscriptions

Pay-As-You-Go subscriptions are simple to use and simple to set up.  There are no minimum purchases or commitments.  You pay for your consumption by credit-card on a monthly basis and you can cancel anytime.  This use-case is primarily for infrastructure environments that are setup for a temporary purpose.  It’s important to understand that organizations using this model pay full list price for consumption and do not have direct support from Microsoft.

#2 – Microsoft Enterprise Agreement (EA)

Microsoft Enterprise Agreements are commitment based Microsoft Volume Licensing agreements with a contractual term of 3 years.  Enterprise Agreement customers can add Azure to their EA by making an upfront monetary commitment for Azure services.  That commitment is consumed throughout the year by using a combination of the wide variety of Microsoft cloud services including Azure and Office 365.  This is paid annually in advance with a true up on a quarterly basis for overages.  Any unused licenses are still charged based on the commitment.  If you are a very large enterprise, the greatest advantage of an EA is having a direct relationship with a Microsoft sales team.  Also, EAs offer discounts based on your financial commitment.  And while there are many pros to the EA approach, understanding and controlling the cost of consumption can be a challenge for customers within EAs.  Personally, I recently took over the management of our EA and can attest that this can be very complicated.

#3 – Cloud Solution Provider (CSP)

When using Microsoft Cloud Services through the Cloud Solution Provider (CSP) program, you work directly with a partner to design and implement a cloud solution that meets your unique needs.  Cloud Solution Providers, support all Microsoft Cloud Services (i.e., Azure, Office 365, Enterprise Mobility Suite and Dynamics CRM Online) through a single platform.  CSP is similar to the Pay-As-You-Go subscription in that there are no minimum purchases or commitments.  Your consumption is invoiced monthly based on actual consumption (either via invoiced PO or credit card, your choice), and you can cancel at anytime.  This will significantly simplify your Azure and Office 365 billing process!  CSP offers many advantages over Pay-As-You-Go Subscriptions and Enterprise Agreements, and in most cases can be a more cost effective solution.

As a CSP, Coretek helps customers optimize their consumption cost by working with our customers to ensure they have the right Azure server types assigned to their workloads.  We also work with customers to shut down services when they are minimally used after business hours.  As part of Coretek’s Managed Support, our team provides proactive maintenance to ensure your infrastructure is running in an optimal manor including monitoring and patching of your servers.  Coretek’s Azure Management Suite (AMS) Portal enables business users to understand where the cost of their consumption is being utilized.  The AMS portal can display real time consumption cost based on department and projects.  It also enables business users to understand what Microsoft licenses are being utilized and who they are assigned to in a simple graphical format.

Coretek Services – Improving End User Experience and IT Efficiency.

Microsoft Azure – Global. Trusted. Hybrid.  This is cloud on your terms.

Azure – What tags are we using again…?

2017-07-27T00:00:55+00:00 July 7th, 2017|Azure, blog, PowerShell|

Have you wondered what tags are assigned to all your Azure VMs?  Do you not have ARM Policies in place to enforce your preferred tags yet?

I was in just such a situation the other day.  Just like in my previous post on quick Azure-related scripts, I was working with a customer that just wanted a quick utility to report on what VMs are properly tagged (or not) in their implementation, without having to fish around the Portal.  No ARM Policies there yet…  *yet*.

So I whipped this together.  And much like that previous script, you just paste this into a PS1 file, set the subscription name in the variable, and then run it.

# GetVmTags - Jeremy Pavlov @ Coretek Services 
# Setting the subscription here
$MySubscriptionName = "My Subscription"
# Set some empty arrays
$vmobjs = @()
$vmTagsKeys = @()
$vmTagsValues = @()
# Get the VMs...
$vms = Get-AzureRmVm 
#
$NeedToLogin = Read-Host "Do you need to log in to Azure? (Y/N)"
if ($NeedToLogin -eq "Y")
{
  Login-AzureRmAccount
  Select-AzureRmSubscription -SubscriptionName $MySubscriptionName
}
elseif ($NeedToLogin -eq "N")
{
  Write-Host "You must already be logged in then.  Fine. Continuing..."
}
else
{
  Write-Host ""
  Write-Host "You made an invalid choice.  Exiting..."
  exit
}
#
foreach ($vm in $vms)
{
    Write-Host ""
    $vmname = $vm.name
    $MyResourceGroup = $vm.ResourceGroupName
    Write-Host "Checking tags for VM $vmname... "
    Start-Sleep 1
    $vmTags = (Get-AzureRmVM -name $vmname -ResourceGroupName $MyResourceGroup).Tags
    $vmTagsCount = $vmTags.Count
    if ($vmTagsCount -gt 0)
    {
      $vmTagsKeys = $vmTags.Keys -split '
[\r\n]' $vmTagsValues = $vmTags.Values -split '[\r\n]' for ($i=0;$i -lt $vmTagsCount; $i++) { $CurrentTagKey = $vmTagsKeys[$i] $CurrentTagValue = $vmTagsValues[$i] Write-Host -ForegroundColor Green "Key : Value -- $CurrentTagKey : $CurrentTagValue" } } else { Write-Host -ForegroundColor Yellow "No tags for $vmname" } }

The results should look something like this, except hopefully a lot more serious and business-y:

Have fun with it, change it up, and let me know what you do with it…   I hope it helps.  Enjoy!

Load More Posts

Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `POST https://dc.services.visualstudio.com/v2/track` resulted in a `400 Invalid instrumentation key` response: {"itemsReceived":1,"itemsAccepted":0,"errors":[{"index":0,"statusCode":400,"message":"Invalid instrumentation key"}]} ' in /home/coretek/public_html/wp-content/plugins/application-insights/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /home/coretek/public_html/wp-content/plugins/application-insights/vendor/guzzlehttp/guzzle/src/Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /home/coretek/public_html/wp-content/plugins/application-insights/vendor/guzzlehttp/promises/src/Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /home/coretek/public_html/wp-content/plugins/application-insights/vendor/guzzlehttp/promises/src/Promise.php(156): GuzzleHttp\Promi in /home/coretek/public_html/wp-content/plugins/application-insights/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113