Month: July 2024
The Mathieu Equation—Stability for 2DOF whirlflutter system
I am attempting to create a whirl flutter diagram based on these calculations by identifying regions of instability such as flutter and divergence areas by examining the eigenvalues of the system. As my coefficients are periodic
Is my approach for determining the Stiffnesses and angles correct, and how can I change the process using the Floquet technique and the Mathieu equation? Because ultimately, the boundries are not shown correctly according to the reference.
clc;
clear all;
% Define parameters
N = 2; % Number of blades
I_thetaoverI_b = 2; % Moment of inertia pitch axis over I_b
I_psioverI_b = 2; % Moment of inertia yaw axis over I_b
C_thetaoverI_b = 0.00; % Damping coefficient over I_b
C_psioverI_b = 0.00; % Damping coefficient over I_b
h = 0.3; % rotor mast height, wing tip spar to rotor hub
hoverR = 0.34;
R = h / hoverR;
gamma = 4; % lock number
V = 1000; % the rotor forward velocity [knots]
Omega = V/R; % the rotor rotational speed [RPM]
freq_1_over_Omega = 1 / Omega;
%the flap moment aerodynamic coefficients for large V
M_b = -(1/10)*V;
M_u = 1/6;
%the propeller aerodynamic coefficients
H_u = V/2;
% Frequency ranges
f_pitch= 0.001:0.5:5;
f_yaw= 0.001:0.5:5;
% Time periods for pitch and yaw
T_pitch = 1 ./ (2 * pi * f_pitch);
T_yaw = 1 ./ (2 * pi * f_yaw);
divergence_map = [];
Rdivergence_map = [];
unstable = [];
% Modify the loop to iterate over time points
for i = 1:length(T_pitch)
for j = 1:length(T_yaw)
T = max(T_pitch(i), T_yaw(j)); % Use the maximum period to cover all dynamics
t_steps = linspace(0, T, 100); % Time steps within one period
for t = t_steps
% Angular frequencies for the current time point
w_omega_pitch = 2 * pi / T_pitch(i);
w_omega_yaw = 2 * pi / T_yaw(j);
K_psi = (w_omega_pitch^2) * I_psioverI_b;
K_theta = (w_omega_yaw^2) * I_thetaoverI_b;
% Calculate matrices at time t using harmonic motion expressions
phi = 2 * pi * t / T; % Phase variation over the period
% Define inertia matrix [M]
M_matrix = [I_thetaoverI_b + 1 + cos(2*phi), -sin(2*phi);
-sin(2*phi), I_psioverI_b + 1 – cos(2*phi)];
% Define damping matrix [D]
D11 = h^2*gamma*H_u*(1 – cos(2*phi)) – gamma*M_b*(1 + cos(2*phi)) – (2 + 2*h*gamma*M_u)*sin(2*phi);
D12 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) – 2*(1 + cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D21 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) + 2*(1 – cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D22 = h^2*gamma*H_u*(1 + cos(2*phi)) – gamma*M_b*(1 – cos(2*phi)) + (2 + 2*h*gamma*M_u)*sin(2*phi);
D_matrix = [D11, D12;
D21, D22];
% Define stiffness matrix [K]
K11 = K_theta – h*gamma*V*H_u*(1 – cos(2*phi)) + gamma*V*M_u*sin(2*phi);
K12 = -h*V*gamma*H_u*sin(2*phi) + gamma*V*M_u*(1 + cos(2*phi));
K21 = -h*gamma*V*H_u*sin(2*phi) – gamma*V*M_u*(1 – cos(2*phi));
K22 = K_psi – h*gamma*V*H_u*(1 + cos(2*phi)) – gamma*V*M_u*sin(2*phi);
K_matrix = [K11, K12;
K21, K22];
% Compute the system matrices
M11 = M_matrix(1, 1); M12 = M_matrix(1, 2); M21 = M_matrix(2, 1); M22 = M_matrix(2, 2);
D11 = D_matrix(1, 1); D12 = D_matrix(1, 2); D21 = D_matrix(2, 1); D22 = D_matrix(2, 2);
K11 = K_matrix(1, 1); K12 = K_matrix(1, 2); K21 = K_matrix(2, 1); K22 = K_matrix(2, 2);
P0 = M11*M22-M12*M21;
P1 = (- D11*M22*1j – D22*M11*1j + M12*D21*j + D12*M21*j);
P2 = (D11*D22*(1j)^2 – K22*M11 – K11*M22 – D12*D21*(1j)^2 + M12*K21 + M21*K12);
P3 = (D11*K22*1j – D12*K21*1j – D21*K12*1j + D22*K11*1j);
P4 = K11*K22 – K12*K21;
P = roots([P0, P1, P2, P3, P4]);
r = 1 * P;
%Flutter
for k = 1:length(r)
if (real(r(k)) > 0)
if (imag(r(k)) <= 0)
unstable = [unstable; phi, K_psi, K_theta];
% Proximity check for 1/Ω divergence
if abs(real(r(k)) – freq_1_over_Omega) < 1e-5
Rdivergence_map = [Rdivergence_map; phi, K_psi, K_theta];
end
end
end
end
%Divergence
if (real(det(K_matrix)) < 0)
divergence_map = [divergence_map; t, K_psi, K_theta];
end
end
end
end
% Plotting section
figure;
hold on;
scatter(unstable(:,2), unstable(:,3), ‘filled’);
scatter(divergence_map(:,2), divergence_map(:,3), ‘filled’, ‘r’);
scatter(Rdivergence_map(:,2), Rdivergence_map(:,3), ‘filled’, ‘g’);
xlabel(‘K_psi’);
ylabel(‘K_theta’);
title(‘Whirl Flutter Diagram’);
legend(‘Flutter area’, ‘Divergence area’, ‘1/Ω Divergence area’);
hold off;I am attempting to create a whirl flutter diagram based on these calculations by identifying regions of instability such as flutter and divergence areas by examining the eigenvalues of the system. As my coefficients are periodic
Is my approach for determining the Stiffnesses and angles correct, and how can I change the process using the Floquet technique and the Mathieu equation? Because ultimately, the boundries are not shown correctly according to the reference.
clc;
clear all;
% Define parameters
N = 2; % Number of blades
I_thetaoverI_b = 2; % Moment of inertia pitch axis over I_b
I_psioverI_b = 2; % Moment of inertia yaw axis over I_b
C_thetaoverI_b = 0.00; % Damping coefficient over I_b
C_psioverI_b = 0.00; % Damping coefficient over I_b
h = 0.3; % rotor mast height, wing tip spar to rotor hub
hoverR = 0.34;
R = h / hoverR;
gamma = 4; % lock number
V = 1000; % the rotor forward velocity [knots]
Omega = V/R; % the rotor rotational speed [RPM]
freq_1_over_Omega = 1 / Omega;
%the flap moment aerodynamic coefficients for large V
M_b = -(1/10)*V;
M_u = 1/6;
%the propeller aerodynamic coefficients
H_u = V/2;
% Frequency ranges
f_pitch= 0.001:0.5:5;
f_yaw= 0.001:0.5:5;
% Time periods for pitch and yaw
T_pitch = 1 ./ (2 * pi * f_pitch);
T_yaw = 1 ./ (2 * pi * f_yaw);
divergence_map = [];
Rdivergence_map = [];
unstable = [];
% Modify the loop to iterate over time points
for i = 1:length(T_pitch)
for j = 1:length(T_yaw)
T = max(T_pitch(i), T_yaw(j)); % Use the maximum period to cover all dynamics
t_steps = linspace(0, T, 100); % Time steps within one period
for t = t_steps
% Angular frequencies for the current time point
w_omega_pitch = 2 * pi / T_pitch(i);
w_omega_yaw = 2 * pi / T_yaw(j);
K_psi = (w_omega_pitch^2) * I_psioverI_b;
K_theta = (w_omega_yaw^2) * I_thetaoverI_b;
% Calculate matrices at time t using harmonic motion expressions
phi = 2 * pi * t / T; % Phase variation over the period
% Define inertia matrix [M]
M_matrix = [I_thetaoverI_b + 1 + cos(2*phi), -sin(2*phi);
-sin(2*phi), I_psioverI_b + 1 – cos(2*phi)];
% Define damping matrix [D]
D11 = h^2*gamma*H_u*(1 – cos(2*phi)) – gamma*M_b*(1 + cos(2*phi)) – (2 + 2*h*gamma*M_u)*sin(2*phi);
D12 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) – 2*(1 + cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D21 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) + 2*(1 – cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D22 = h^2*gamma*H_u*(1 + cos(2*phi)) – gamma*M_b*(1 – cos(2*phi)) + (2 + 2*h*gamma*M_u)*sin(2*phi);
D_matrix = [D11, D12;
D21, D22];
% Define stiffness matrix [K]
K11 = K_theta – h*gamma*V*H_u*(1 – cos(2*phi)) + gamma*V*M_u*sin(2*phi);
K12 = -h*V*gamma*H_u*sin(2*phi) + gamma*V*M_u*(1 + cos(2*phi));
K21 = -h*gamma*V*H_u*sin(2*phi) – gamma*V*M_u*(1 – cos(2*phi));
K22 = K_psi – h*gamma*V*H_u*(1 + cos(2*phi)) – gamma*V*M_u*sin(2*phi);
K_matrix = [K11, K12;
K21, K22];
% Compute the system matrices
M11 = M_matrix(1, 1); M12 = M_matrix(1, 2); M21 = M_matrix(2, 1); M22 = M_matrix(2, 2);
D11 = D_matrix(1, 1); D12 = D_matrix(1, 2); D21 = D_matrix(2, 1); D22 = D_matrix(2, 2);
K11 = K_matrix(1, 1); K12 = K_matrix(1, 2); K21 = K_matrix(2, 1); K22 = K_matrix(2, 2);
P0 = M11*M22-M12*M21;
P1 = (- D11*M22*1j – D22*M11*1j + M12*D21*j + D12*M21*j);
P2 = (D11*D22*(1j)^2 – K22*M11 – K11*M22 – D12*D21*(1j)^2 + M12*K21 + M21*K12);
P3 = (D11*K22*1j – D12*K21*1j – D21*K12*1j + D22*K11*1j);
P4 = K11*K22 – K12*K21;
P = roots([P0, P1, P2, P3, P4]);
r = 1 * P;
%Flutter
for k = 1:length(r)
if (real(r(k)) > 0)
if (imag(r(k)) <= 0)
unstable = [unstable; phi, K_psi, K_theta];
% Proximity check for 1/Ω divergence
if abs(real(r(k)) – freq_1_over_Omega) < 1e-5
Rdivergence_map = [Rdivergence_map; phi, K_psi, K_theta];
end
end
end
end
%Divergence
if (real(det(K_matrix)) < 0)
divergence_map = [divergence_map; t, K_psi, K_theta];
end
end
end
end
% Plotting section
figure;
hold on;
scatter(unstable(:,2), unstable(:,3), ‘filled’);
scatter(divergence_map(:,2), divergence_map(:,3), ‘filled’, ‘r’);
scatter(Rdivergence_map(:,2), Rdivergence_map(:,3), ‘filled’, ‘g’);
xlabel(‘K_psi’);
ylabel(‘K_theta’);
title(‘Whirl Flutter Diagram’);
legend(‘Flutter area’, ‘Divergence area’, ‘1/Ω Divergence area’);
hold off; I am attempting to create a whirl flutter diagram based on these calculations by identifying regions of instability such as flutter and divergence areas by examining the eigenvalues of the system. As my coefficients are periodic
Is my approach for determining the Stiffnesses and angles correct, and how can I change the process using the Floquet technique and the Mathieu equation? Because ultimately, the boundries are not shown correctly according to the reference.
clc;
clear all;
% Define parameters
N = 2; % Number of blades
I_thetaoverI_b = 2; % Moment of inertia pitch axis over I_b
I_psioverI_b = 2; % Moment of inertia yaw axis over I_b
C_thetaoverI_b = 0.00; % Damping coefficient over I_b
C_psioverI_b = 0.00; % Damping coefficient over I_b
h = 0.3; % rotor mast height, wing tip spar to rotor hub
hoverR = 0.34;
R = h / hoverR;
gamma = 4; % lock number
V = 1000; % the rotor forward velocity [knots]
Omega = V/R; % the rotor rotational speed [RPM]
freq_1_over_Omega = 1 / Omega;
%the flap moment aerodynamic coefficients for large V
M_b = -(1/10)*V;
M_u = 1/6;
%the propeller aerodynamic coefficients
H_u = V/2;
% Frequency ranges
f_pitch= 0.001:0.5:5;
f_yaw= 0.001:0.5:5;
% Time periods for pitch and yaw
T_pitch = 1 ./ (2 * pi * f_pitch);
T_yaw = 1 ./ (2 * pi * f_yaw);
divergence_map = [];
Rdivergence_map = [];
unstable = [];
% Modify the loop to iterate over time points
for i = 1:length(T_pitch)
for j = 1:length(T_yaw)
T = max(T_pitch(i), T_yaw(j)); % Use the maximum period to cover all dynamics
t_steps = linspace(0, T, 100); % Time steps within one period
for t = t_steps
% Angular frequencies for the current time point
w_omega_pitch = 2 * pi / T_pitch(i);
w_omega_yaw = 2 * pi / T_yaw(j);
K_psi = (w_omega_pitch^2) * I_psioverI_b;
K_theta = (w_omega_yaw^2) * I_thetaoverI_b;
% Calculate matrices at time t using harmonic motion expressions
phi = 2 * pi * t / T; % Phase variation over the period
% Define inertia matrix [M]
M_matrix = [I_thetaoverI_b + 1 + cos(2*phi), -sin(2*phi);
-sin(2*phi), I_psioverI_b + 1 – cos(2*phi)];
% Define damping matrix [D]
D11 = h^2*gamma*H_u*(1 – cos(2*phi)) – gamma*M_b*(1 + cos(2*phi)) – (2 + 2*h*gamma*M_u)*sin(2*phi);
D12 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) – 2*(1 + cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D21 = h^2*gamma*H_u*sin(2*phi) + gamma*M_b*sin(2*phi) + 2*(1 – cos(2*phi)) – 2*h*gamma*M_u*cos(2*phi);
D22 = h^2*gamma*H_u*(1 + cos(2*phi)) – gamma*M_b*(1 – cos(2*phi)) + (2 + 2*h*gamma*M_u)*sin(2*phi);
D_matrix = [D11, D12;
D21, D22];
% Define stiffness matrix [K]
K11 = K_theta – h*gamma*V*H_u*(1 – cos(2*phi)) + gamma*V*M_u*sin(2*phi);
K12 = -h*V*gamma*H_u*sin(2*phi) + gamma*V*M_u*(1 + cos(2*phi));
K21 = -h*gamma*V*H_u*sin(2*phi) – gamma*V*M_u*(1 – cos(2*phi));
K22 = K_psi – h*gamma*V*H_u*(1 + cos(2*phi)) – gamma*V*M_u*sin(2*phi);
K_matrix = [K11, K12;
K21, K22];
% Compute the system matrices
M11 = M_matrix(1, 1); M12 = M_matrix(1, 2); M21 = M_matrix(2, 1); M22 = M_matrix(2, 2);
D11 = D_matrix(1, 1); D12 = D_matrix(1, 2); D21 = D_matrix(2, 1); D22 = D_matrix(2, 2);
K11 = K_matrix(1, 1); K12 = K_matrix(1, 2); K21 = K_matrix(2, 1); K22 = K_matrix(2, 2);
P0 = M11*M22-M12*M21;
P1 = (- D11*M22*1j – D22*M11*1j + M12*D21*j + D12*M21*j);
P2 = (D11*D22*(1j)^2 – K22*M11 – K11*M22 – D12*D21*(1j)^2 + M12*K21 + M21*K12);
P3 = (D11*K22*1j – D12*K21*1j – D21*K12*1j + D22*K11*1j);
P4 = K11*K22 – K12*K21;
P = roots([P0, P1, P2, P3, P4]);
r = 1 * P;
%Flutter
for k = 1:length(r)
if (real(r(k)) > 0)
if (imag(r(k)) <= 0)
unstable = [unstable; phi, K_psi, K_theta];
% Proximity check for 1/Ω divergence
if abs(real(r(k)) – freq_1_over_Omega) < 1e-5
Rdivergence_map = [Rdivergence_map; phi, K_psi, K_theta];
end
end
end
end
%Divergence
if (real(det(K_matrix)) < 0)
divergence_map = [divergence_map; t, K_psi, K_theta];
end
end
end
end
% Plotting section
figure;
hold on;
scatter(unstable(:,2), unstable(:,3), ‘filled’);
scatter(divergence_map(:,2), divergence_map(:,3), ‘filled’, ‘r’);
scatter(Rdivergence_map(:,2), Rdivergence_map(:,3), ‘filled’, ‘g’);
xlabel(‘K_psi’);
ylabel(‘K_theta’);
title(‘Whirl Flutter Diagram’);
legend(‘Flutter area’, ‘Divergence area’, ‘1/Ω Divergence area’);
hold off; floquet technic, dynamical system MATLAB Answers — New Questions
why we want to use matlab for fingerprint enhancement Is it the best software for fingerprint enhancement?
As I am using Matlab for fingerprint enhancement. I got some doubt why we can use Matlab only why we cannot use other software and In what way Matlab is best in fingerprint enhancementAs I am using Matlab for fingerprint enhancement. I got some doubt why we can use Matlab only why we cannot use other software and In what way Matlab is best in fingerprint enhancement As I am using Matlab for fingerprint enhancement. I got some doubt why we can use Matlab only why we cannot use other software and In what way Matlab is best in fingerprint enhancement matlab fingerprint, image processing MATLAB Answers — New Questions
Just wondering–have they fixed the problem with contact lists?
I am using MS365 and Windows 11 on a new computer. I had to manually enter all my email contacts because the last computer’s hard drive died and took them with it. So I got done with one of my contact lists and attempted to send an email using the contact list–150 emails. Finished the message, put the contact list into BCC and nothing. Checked the contact list title–says there’s no addresses in it. Redid the contact list–same thing. Finally downloaded my email addresses to the old Outlook and sent the message that way–needed to get it out today. Did anyone get this figured out yet?
I am using MS365 and Windows 11 on a new computer. I had to manually enter all my email contacts because the last computer’s hard drive died and took them with it. So I got done with one of my contact lists and attempted to send an email using the contact list–150 emails. Finished the message, put the contact list into BCC and nothing. Checked the contact list title–says there’s no addresses in it. Redid the contact list–same thing. Finally downloaded my email addresses to the old Outlook and sent the message that way–needed to get it out today. Did anyone get this figured out yet? Read More
Easily deploy .NET apps to Azure Container Apps with default configuration for data protection
The Azure Container Apps and .NET team have made it easier than ever to deploy your .NET application by supporting automatic configuration for data protection. This support is currently available as an opt-in feature in the Container Apps API version 2024-02-02-preview.
This blog post will discuss the feature and what it enables, how to determine if your application is correctly configured, and how to enable configuration for data protection across a variety of .NET versions.
What is data protection?
Many ASP.NET Core apps rely on a feature called data protection, which is a cryptographic API to protect data using methods like key management and rotation. By default, it requires additional configuration in both Azure and in application code to function correctly when hosted in Container Apps.
If data protection isn’t configured, the application will appear to function correctly but will experience bugs when the application scales out to multiple replicas.
For detailed information about the data protection feature, read here.
Configuring data protection for your .NET Application
The process of configuring the data protection feature varies depending on the version of .NET you are using.
.NET Aspire
Aspire applications deployed using the Azure Developer CLI (azd) will have data protection configured by default.
.NET 8 and up
If you are using ASP.NET Core v9.0.0-preview.2.24128.4 and later and ASP.NET Core v8.0.4 and newer, you can configure data protection using ARM and Bicep.
This can be done with turning on the new `autoConfigureDataProtection` property, which will allow ASP.NET Core data protection keys to be automatically managed by the platform.
.NET 7 and under
If you are using ASP.NET Core with a lower version than previously described, you will have to configure data protection manually. We recommend upgrading to one of the supported .NET versions or doing so using ARM.
Next Steps
Congratulations, you now ensured that your .NET application has data protection correctly configured and will scale to multiple replicas without issue!
Want to learn more? You can…
Review the Azure Container Apps docs.
Learn more about pricing details from the Azure Container Apps pricing page.
Reach us directly at any time via our GitHub microsoft/azure-container-apps repo.
Connect with the Azure Container Apps team on Twitter and Discord.
Microsoft Tech Community – Latest Blogs –Read More
Windows Admin Center (v2) Public Preview build has been updated!
It’s been seven months since we released the last Public Preview for our “Modernized Gateway” (known as v2) — today, we’re updating the Public Preview build with new functionality and bug fixes. As we get closer to officially releasing this version to general availability (GA), we want to hear from you first so that we proactively address any feedback you may have!
Please note that this is still a Public Preview version of Windows Admin Center, so it is not recommended to install this build in your production environment. This preview version will no longer be able to be installed side-by-side with the last GA release (version 2311, or any of the previous releases). Once you install this build and migrate your user data and environment configurations, you will not be able to go back.
We’ve been working behind the scenes to ensure that Windows Admin Center is up-to-date, secure, and reliable. We suggest experienced users of Windows Admin Center and Windows Admin Center developers give this new build a try. Read on to learn about the new features and updates!
What’s new in this v2 build
Upgrade to .NET Core
The Windows Admin Center frontend user-interface (UI) is built on Angular, which is in turn built on our shell. The shell hosts all the core services and most of our UI components, our solutions like server and cluster manager, and, on top of that, every extension that you use for server management.
Our front end interacts with our backend, which is also known as our gateway. The gateway hosts our authorization structure, our PS services, our gateway plug-ins, and plays a critical role in every single experience that you use in Windows Admin Center.
In this release, we have upgraded our backend again, from the .NET Core 6 to .NET Core 8, bringing enhanced security and improved cryptography to our product. This also includes support for HTTP 2, reducing latency and enhancing the responsiveness of Windows Admin Center. Combined with improved performance, providing faster load times, you’ll be able to get your tasks done more quickly and efficiently.
Virtual machine tool update
We have heard your feedback and have improved the virtual machine (VM) tool experience! Our primary goal is to provide you with the list of VMs as soon as possible so you are empowered to efficiently carry out your administrative tasks.
Today, we invite you all to enable this feature, use the tool, and share your feedback.
Highlights:
The VM Power operations (e.g. start, pause etc.) now only update the VM selected without reloading the entire table, saving customers valuable time
To optimize responsiveness (e.g., clicking, hovering and scrolling), we have removed the runtime pipeline.
To prioritize loading the VM list first, certain operations are deferred until after the initial load (e.g., cluster node check)
To optimize performance, we have reduced the columns in the default view. Note that this can be toggled off using the “Detailed Mode” toggle to switch back to the previous experience
A new streamlined Azure Site Recovery integration experience for users
How to enable the feature
Navigate to your Windows Admin Center settings by selecting the gear in the top right corner of the header.
Navigate to the “Advanced” tab.
Add the following experiment key: msft.sme.hyperv.hyperVPreviewMode
Updated installer
While modernizing our gateway, we also made the installer more flexible by providing increased customization options including network access settings, selecting trusted hosts, providing a fully qualified domain name (FQDN) for your gateway machine, and more. For more details about the installer, read on to the Installing the v2 build section.
Data migration
To ensure that your user and environment data is transferred over, we have implemented a data migration flow so that you will seamlessly transition to the new v2 build. All of your data will be copied over, except for 4 items that will require user intervention. For more details about the installer, read on to the Migrating your data section.
Settings update
As part of our gateway modernization effort, you may notice that your Windows Admin Center settings look a little bit different.
As we discussed in the 2211 Windows Admin Center release, we have deprecated the in-app update experience and have consequently removed the settings blade for Updates. Additionally, the Access and Shared Connections blades are now available on local gateway installations (also known as “desktop mode” in legacy gateway builds).
Multi-process, micro-service based
The v2 build also leverages microservice architecture. Prior to this upgrade, Windows Admin Center performed all tasks in a single process. With our new model, we start one process for Windows Admin Center on application startup that serves as a process manager. As you use Windows Admin Center, additional sub-processes are spun up to perform specific tasks.
Additionally, gateway plug-ins that are compatible with the v2 build will also run their own collection of sub-processes under the Windows Admin Center service manager to perform their functions.
Changing from a monolithic service to a microservice model helps our v2 build be more flexible, scalable, and resilient.
Kestrel HTTP web server
Previously, Windows Admin Center utilized Katana components, including a web server, on the backend. With the v2 build, we’ve shifted to an ASP.NET Core Kestrel web server.
Kestrel is the recommended web server for ASP.NET Core applications. Kestrel is:
High performing: Kestrel is optimized to handle a large number of concurrent connections efficiently.
Lightweight: Optimized for running in resource-constrained environments, such as containers and edge devices.
Security hardened: Kestrel supports HTTPS and is hardened against web server vulnerabilities.
Additionally, Kestrel supports the HTTP/2 web protocol, where previously we had only supported HTTP1.1 with the Katana components. The upgrade from HTTP1.1 to HTTP/2 brings reduced latency to our application as well as increased responsiveness through enhanced features like multiplexing and server push.
Switching to a Kestrel web server will also allow for Windows Admin Center to potentially enable cross-platform support in the future.
How does the v2 build impact my extension?
Gateway plug-in extensions will be the most impacted by the changes to our v2 build. Windows Admin Center gateway plug-ins enable API communication from the UI of your tool or solution to a target node. Windows Admin Center hosts a gateway service that relays commands and scripts from gateway plug-ins to be executed on target nodes. The gateway service can be extended to include custom gateway plug-ins that support protocols other than the default ones (PowerShell and WMI).
Because gateway plug-ins communicate with Windows Admin Center’s backend to enable API communication, gateway plug-in code may include components written with the .NET framework version 4.6.2, which will not function with .NET Core. This code needs to be updated to use the .NET Core framework.
Additionally, we’ve modified the way plug-ins work with our v2 build. Instead of developing a C# class which implements the IPlugIn interface from the Microsoft.ManagementExperience.FeatureInterfaces namespace to extend the gateway plug-in, extensions will now be written in the form of ASP.NET MVC controllers. These controllers have increased flexibility compared to the simple C# class and extensive documentation.
Learn more about gateway plug-in development in Windows Admin Center here.
What about my tool and/or solution extension?
Solution and tool extensions do not communicate with Windows Admin Center’s backend in-depth and should be minimally impacted by the v2 build. We strongly recommend testing your extension to ensure it continues to run smoothly on the new backend.
Installing the v2 build
With our v2 build, we’ve made changes to our installer to offer more flexibility to the user.
When running the installer, you will be presented with three different installation modes: express localhost setup, express remote setup, and custom setup.
Express setup options
Two of the three installation modes for the v2 build are express modes—express localhost setup and express remote setup.
Both express setup options do not allow for the configuration of the following features:
Login authentication mode
Host access network names
Internal and external network ports
Certificate type and thumbprint
Endpoint FQDN
Trusted hosts mode
WinRM over HTTPS
If you would like to configure any of these features, please use the custom setup option instead.
If you select the express localhost setup option, WAC will be accessible through port 6600 and will use internal ports 6601-6610.
If you select the express remote setup option, WAC will be accessible through port 443 and will use internal ports 6601-6610.
Custom setup
Selecting custom setup allows you to configure all Windows Admin Center setup options:
Network access – This page allows you to select how you will be using Windows Admin Center. You may choose to restrict WAC access to other users by selecting localhost access only or allow remote access through machine name of FQDN.
Port numbers – This page allows you to select the ports that will be reserved for Windows Admin Center. WAC uses one external port for its primary processes. Other processes use internal ports. There are two internal processes by default, but extensions may define their own services that will require port access. By default, the internal range is 10 ports.
Select TLS certificate – This page allows you to select Self-Signed certificates or an official TLS certificate that Windows Admin Center should use. Self-Signed certificates include Self-signed CA root certificates and TLS certificates that work with the latest Edge/Chrome browser.
Fully qualified domain name – This page allows you to provide a fully qualified domain name for network access. This name must match the name on the TLS certificate.
Trusted hosts – This page allows you to select which type of remote hosts you’d like to manage. You may choose to manage only trusted domain computers or allow access to non-domain joined machines.
WinRM over HTTPS – This page allows you to select whether to use HTTPS for WinRM communication. WinRM communicates over HTTP by default.
Troubleshooting installation
If your installation failed, or you’re having trouble opening WAC after install, you may need to uninstall and reinstall. This can also happen if you have an older version of a v2 build installed, and you are trying to update to a newer version. To uninstall, follow the instructions in the Uninstalling and cleanup section of this document.
Migrating your data
Once you have installed the v2 build, much of your transferable data is automatically copied over to the new build, reducing the time it takes for you to get started. However, there are four items that will require your input on:
Proxy credentials
WebSocket Origin configuration
Azure registration
Extensions
You will only have to do this once. Once your data is fully migrated, future releases of Windows Admin Center will have the seamless update experience you know and love.
Proxy credentials
Windows Admin Center will not be able to able access Azure services and the public extension feed without proper proxy credentials. If you have a proxy set up, then you will need to enter the proxy address, as well as the username and password to give Windows Admin Center access.
WebSocket Origin configuration
If you had previously configured WebSocket Origins, you can review and edit them here. To get you started, we have imported the WebSocket Origins list from your previous Windows Admin Center setup.
Azure registration
Windows Admin Center now requires additional redirect URLs to be configured with the Azure App Registration instance. This can only be done through the Azure Portal. Selecting the “Configure” button will programmatically update the Azure App Registration on your behalf. After it is registered, you may need to re-enable Azure login to Windows Admin Center.
You will need the elevated permissions on this Azure subscription to perform this re-registration.
Extensions
The extension feed for v2 builds is not currently fully configured. You may notice missing extensions from this Windows Admin Center instance, including extensions not installed by default on install and ones you may have installed from your own feed or from external partners. As of right now, this page is read-only. We’re working with our internal and external partners to ensure that all extensions are compatible with v2—these extensions will be available soon.
Review + complete
You will not be allowed to use Windows Admin Center unless you complete these steps.
Uninstalling the v2 build
To uninstall the Windows Admin Center (v2), perform one of the following actions:
In the Apps & Features page of your gateway machine settings, select Windows Admin Center (v2) Preview from the program list and then select uninstall.
Navigate to the folder where the Windows Admin Center (v2)is installed (default directory is C:ProgramDataMicrosoftWindowsStart MenuProgramsWindows Admin Center (v2)) and select “Uninstall Windows Admin Center (v2)”
Run C:Program FilesWindowsAdminCenterunins000.exe
Running the installer again will not result in an uninstall option at this time. To ensure your installation was removed successfully, check if a WindowsAdminCenter folder exists in C:ProgramData or C:Program Files. If it does not exist in either location, your application has been successfully uninstalled.
During the uninstallation process, everything put on the machine during installation will be removed, except for the Windows Admin Center (v2) .exe installer file. If you have another build of Windows Admin Center also installed at the time of your v2 build uninstallation, no files or properties of the other build will be touched during the uninstallation process. There are no interdependencies between the two installations.
FAQs
Q: Can you install a build of Windows Admin Center (v2) when you already have an existing build of Windows Admin Center installed?
A: Yes, you can install a v2 build of Windows Admin Center side-by-side with a legacy gateway build as long as you do not choose the same ports for both installations.
Q: Can I change the ports my Windows Admin Center installation is using after install?
A: Yes, In the Program Files for Windows Admin Center, we’ve included a PowerShell module called Microsoft.WindowsAdminCenter.Configuration.psm1. This module allows you to modify your WAC configuration after installation and can be found in the PowerShellModules folder of your installation (C:Program FilesWindowsAdminCenterPowerShellModules by default).
To change the ports WAC is using, run the following command:
Set-WACHttpsPort -Wacport <port> -ServicePortRangeStart <port> -ServicePortRangeEnd <port>
Q: Changing the ports is great, but can I change other configuration settings after install?
A: Yes! You may use the PowerShell module Microsoft.WindowsAdminCenter.Configuration.psm1 to change your configuration settings. It can be found in the PowerShellModules folder of your installation.
Q: Why aren’t all these changes just in the 2311 release?
A: To ensure the best quality experience, we require customer and developer feedback before these changes are generally available.
Q: Are all the features in the 2311 release available in this build?
A: Yes! Read more about the Windows Admin Center 2311 release.
Known issues
The account for the PowerShell session in the PowerShell tool always defaults to the user signed into the Windows Admin Center gateway, even if different management credentials were specified when remoting to a connection.
The extension feed for the v2 build has not been configured. Extensions not included in the Windows Admin Center installer (including external partner extensions) will not be available unless you add an extension feed. Even with an added feed, the following extensions do not currently function with the v2 build:
Dell OpenManage
Lenovo XClarity Integrator
HPE OneView
HPE Server extension and HPE Azure Stack HCI extension
HPE Storage manager
Fujitsu ServerView RAID
Fujitsu Software Infrastructure Manager (ISM)
Fujitsu ServerView Health
Pure Storage FlashArray
Looking forward
Please be on the lookout later this year for our next GA release. It will include even more features for Hyper-V, several Windows Server 2025 exclusive features, and will be the most performant build of Windows Admin Center to date!
Download now!
We hope you enjoy this new, modern version of Windows Admin Center and the various new functionality in preview.
As always, thanks for your ongoing support, adoption, and feedback. Your contributions through user feedback continue to be vital and valuable to us, helping us prioritize and sequence our investments.
Windows Admin Center is continuously evolving and growing as a tool and a platform, and we are beyond thrilled to have you part of our journey.
Thank you,
Windows Admin Center Team (@servermgmt)
Microsoft Tech Community – Latest Blogs –Read More
how do i get the sigmas out of the livescript display?
Hi Everyone,
I am currently working with a very long equation. And when I output it in the livescript, MATLAB finds several sigmas (see screenshot). I would like to have this equation with the sigmas in order to process it in another function.
So far I have tried [r,sigma] = subexpr(expr). I cancelled this command after more than 1 hour of calculation. In addition, subexpr, if I have understood it correctly, only looks for one sigma.
I hope someone here can help me.
I am working with Matla 2017b and the symbolic toolboxHi Everyone,
I am currently working with a very long equation. And when I output it in the livescript, MATLAB finds several sigmas (see screenshot). I would like to have this equation with the sigmas in order to process it in another function.
So far I have tried [r,sigma] = subexpr(expr). I cancelled this command after more than 1 hour of calculation. In addition, subexpr, if I have understood it correctly, only looks for one sigma.
I hope someone here can help me.
I am working with Matla 2017b and the symbolic toolbox Hi Everyone,
I am currently working with a very long equation. And when I output it in the livescript, MATLAB finds several sigmas (see screenshot). I would like to have this equation with the sigmas in order to process it in another function.
So far I have tried [r,sigma] = subexpr(expr). I cancelled this command after more than 1 hour of calculation. In addition, subexpr, if I have understood it correctly, only looks for one sigma.
I hope someone here can help me.
I am working with Matla 2017b and the symbolic toolbox subexpr, matlab, simplify MATLAB Answers — New Questions
uiwait(msgbox(“My message”) dialog comes up behind the app. User never sees it.
Why does uiwait(msgbox("My message") dialog come up behind the app? My user never sees it so can’t click OK. Is there a way to bring it to the front other than uialert() which is a lot more complex to program?Why does uiwait(msgbox("My message") dialog come up behind the app? My user never sees it so can’t click OK. Is there a way to bring it to the front other than uialert() which is a lot more complex to program? Why does uiwait(msgbox("My message") dialog come up behind the app? My user never sees it so can’t click OK. Is there a way to bring it to the front other than uialert() which is a lot more complex to program? uiwait, bring to front MATLAB Answers — New Questions
heat transfer between the air in the cavity and the surrounding solid layers
I am working on simulating heat transfer in a component that consists of multiple solid layers and an enclosed air cavity using the PDE Toolbox in MATLAB. My goal is to account for heat transfer mechanisms such as radiation and convection between the air in the cavity and the surrounding solid layers. is this possible with the pde toolbox? Is there a solutuion without modelling the air as a solid material?I am working on simulating heat transfer in a component that consists of multiple solid layers and an enclosed air cavity using the PDE Toolbox in MATLAB. My goal is to account for heat transfer mechanisms such as radiation and convection between the air in the cavity and the surrounding solid layers. is this possible with the pde toolbox? Is there a solutuion without modelling the air as a solid material? I am working on simulating heat transfer in a component that consists of multiple solid layers and an enclosed air cavity using the PDE Toolbox in MATLAB. My goal is to account for heat transfer mechanisms such as radiation and convection between the air in the cavity and the surrounding solid layers. is this possible with the pde toolbox? Is there a solutuion without modelling the air as a solid material? heat transfer, air cavity, pde MATLAB Answers — New Questions
Please help me understand output from discretize
I am trying to understand what discretize is doing, I have data ranging from 0 to 1 and want to bin it in bins of size .01.
X=[.01:.01:1] ; % – example data uniformly going form .01 to 1 in steps of .01
binEdges=[0:0.01:1]; %- the bind edges
binLocs=discretize(X,binEdges,’IncludedEdge’,’right’); %
%I would expect each bin gets 1 value so that bon locs is [1 2 3 4 5 6 7 8 9 10 etc… up to 100]
but what I get is binLocs=
1 2 3 4 5 7 7 8 9 10 11 12 13 14 16 16 17 19 19 20 22 22 23 25 25 26 27 28 30 30 31 32 33 34 35 37 37 38 39 40 41 43 43 44 45 46 47 49 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
why is is repeating some (for example the values .06 and .07 go in bin 7 and nothing in bin 6 ?
I’d like the first bin to b 0<=x<=.01 bin 2 .01<x<=.02 bin 3 .02<x<=.03 etc..
can someone explain why I am getting 2 values in some bins ( i.e. bin 7 and bin 22)
Thanks,
-JeffI am trying to understand what discretize is doing, I have data ranging from 0 to 1 and want to bin it in bins of size .01.
X=[.01:.01:1] ; % – example data uniformly going form .01 to 1 in steps of .01
binEdges=[0:0.01:1]; %- the bind edges
binLocs=discretize(X,binEdges,’IncludedEdge’,’right’); %
%I would expect each bin gets 1 value so that bon locs is [1 2 3 4 5 6 7 8 9 10 etc… up to 100]
but what I get is binLocs=
1 2 3 4 5 7 7 8 9 10 11 12 13 14 16 16 17 19 19 20 22 22 23 25 25 26 27 28 30 30 31 32 33 34 35 37 37 38 39 40 41 43 43 44 45 46 47 49 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
why is is repeating some (for example the values .06 and .07 go in bin 7 and nothing in bin 6 ?
I’d like the first bin to b 0<=x<=.01 bin 2 .01<x<=.02 bin 3 .02<x<=.03 etc..
can someone explain why I am getting 2 values in some bins ( i.e. bin 7 and bin 22)
Thanks,
-Jeff I am trying to understand what discretize is doing, I have data ranging from 0 to 1 and want to bin it in bins of size .01.
X=[.01:.01:1] ; % – example data uniformly going form .01 to 1 in steps of .01
binEdges=[0:0.01:1]; %- the bind edges
binLocs=discretize(X,binEdges,’IncludedEdge’,’right’); %
%I would expect each bin gets 1 value so that bon locs is [1 2 3 4 5 6 7 8 9 10 etc… up to 100]
but what I get is binLocs=
1 2 3 4 5 7 7 8 9 10 11 12 13 14 16 16 17 19 19 20 22 22 23 25 25 26 27 28 30 30 31 32 33 34 35 37 37 38 39 40 41 43 43 44 45 46 47 49 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
why is is repeating some (for example the values .06 and .07 go in bin 7 and nothing in bin 6 ?
I’d like the first bin to b 0<=x<=.01 bin 2 .01<x<=.02 bin 3 .02<x<=.03 etc..
can someone explain why I am getting 2 values in some bins ( i.e. bin 7 and bin 22)
Thanks,
-Jeff discretize, binning MATLAB Answers — New Questions
Learning Assistance
I am a student at Northcentral Technical College and I’m having a hard time understanding how to be successful in my chosen IT degree program. I’ve tried help from tutors and I’m just not getting IT apparently. I really have a passion and desire to become a Web Designer/Software Developer. I’m not a quitter, so can anyone help me before I fail out of school this semester?
I am a student at Northcentral Technical College and I’m having a hard time understanding how to be successful in my chosen IT degree program. I’ve tried help from tutors and I’m just not getting IT apparently. I really have a passion and desire to become a Web Designer/Software Developer. I’m not a quitter, so can anyone help me before I fail out of school this semester? Read More
When a teams meeting runs longer than schedule
Hello,
I’m just wondering if a Teams meeting would end if it runs longer than what it was scheduled through outlook. Got a few users who mainly used Zoom now being moved over to Teams and they are just curious.
Thanks in advance.
Hello, I’m just wondering if a Teams meeting would end if it runs longer than what it was scheduled through outlook. Got a few users who mainly used Zoom now being moved over to Teams and they are just curious. Thanks in advance. Read More
VLOOKUP Issue, But on one item in the lookup table
I am working on refreshing my memory of Excel, as I have been using Libre for a few years now. I am working on sample data that has a Discount level. I did some Pivot Tables and decided that I wanted the Discounts to be in order (low to high, not alpha), so I added a Discount Level column and loaded a vlookup formula / chart :
Discount BandDiscount LevelHigh3-HighMedium2-MediumLow1-LowNone0-None
Formula: =+VLOOKUP(E470,VLUPTables!$A$2:$B$5,2)
I went back and everything works but Low. I have looked for extra spaces – beginning and end. I have checked for 0 vs o, I have retyped Low. I have copied Low from the table itself. I have tried using ‘1-Low. I thought it would be a row array – but 0-None works! I must be missing something, but I am at a loss. I have even deleted and reloaded everything with the same results. Any help is appreciated.
I am working on refreshing my memory of Excel, as I have been using Libre for a few years now. I am working on sample data that has a Discount level. I did some Pivot Tables and decided that I wanted the Discounts to be in order (low to high, not alpha), so I added a Discount Level column and loaded a vlookup formula / chart : Discount BandDiscount LevelHigh3-HighMedium2-MediumLow1-LowNone0-NoneFormula: =+VLOOKUP(E470,VLUPTables!$A$2:$B$5,2) I went back and everything works but Low. I have looked for extra spaces – beginning and end. I have checked for 0 vs o, I have retyped Low. I have copied Low from the table itself. I have tried using ‘1-Low. I thought it would be a row array – but 0-None works! I must be missing something, but I am at a loss. I have even deleted and reloaded everything with the same results. Any help is appreciated. Read More
Power Automate template only for tenant
We disabled citizen developers in our tenant so each time they use one of the Microsoft Lists templates with flow, the flow would fail.
I’m wondering if I can create and save flows as templates using my connection references and have the templates available in our tenant only, so that any SharePoint sites owners may use these templates? If the users create a flow from these templates, would it still use their own credentials or would it use the connection references from the template?
We disabled citizen developers in our tenant so each time they use one of the Microsoft Lists templates with flow, the flow would fail.I’m wondering if I can create and save flows as templates using my connection references and have the templates available in our tenant only, so that any SharePoint sites owners may use these templates? If the users create a flow from these templates, would it still use their own credentials or would it use the connection references from the template? Read More
prevent other users info for guest users
Hello there,
In my case i use my sharepoint site (Support Tickets list) to track support tickets from my customers which are also my guest users of my tenant. But when they are on the list they see a round bordered head icon on the right top side of the list. When i hovered on this icon it gives the name who is online on the same list. I need to hide this name cause i dont want my customers to track the name of my other customers. Is there a way to hide this icon for guest users?
Hello there,In my case i use my sharepoint site (Support Tickets list) to track support tickets from my customers which are also my guest users of my tenant. But when they are on the list they see a round bordered head icon on the right top side of the list. When i hovered on this icon it gives the name who is online on the same list. I need to hide this name cause i dont want my customers to track the name of my other customers. Is there a way to hide this icon for guest users? Read More
Changing Booking Name and Reply Address
How do I change the Name and E-Mail Address associated with my bookings page / calendar?
How do I change the Name and E-Mail Address associated with my bookings page / calendar? Read More
Demystifying Exchange Online Provisioning: Architecture, Exchange Object Types, and Attributes
We wanted to demystify the process of syncing and provisioning of various recipient objects in Exchange Online. Some of this content might be already familiar to you but some will be new and will (hopefully) help you understand and troubleshoot most issues around Exchange objects provisioning.
Due to the extensiveness of the topic, this will be a series of blog posts instead of one, and to ensure there’s a way for everyone to understand the content, regardless of your experience, we will start with the basics.
Architecture Fundamentals
The simplest architecture when referring to Exchange on-premises is a ‘single forest’ topology, where you have your local Active Directory (AD) and the Microsoft Exchange organization in the same forest. Therefore, we have a single user object that is also Exchange-enabled.
Exchange Online has a separate instance of Active Directory like the concept of Resource Forest topology (which we are going to refer to as Exchange Online Directory Services) and differs from the single forest topology because Entra ID (formerly Azure Active Directory) is where authentication takes place for all user accounts. This means we have two Active Directories and therefore two user objects.
User accounts (and other mail-enabled objects) are synchronized between Entra ID and Exchange Online using processes known as ForwardSync and Dual Write. Objects in Exchange Online are linked to the ones in Entra ID via the ExternalDirectoryObjectID property that will contain the value of the ObjectID of the associated user account in Entra ID.
You will find that a similar design also applies to other workloads like SharePoint Online, Teams, and so on…
Now let’s introduce the Microsoft Exchange hybrid environment as a new element. A Microsoft Exchange hybrid environment can be quickly defined as a relationship between 2 Microsoft Exchange organizations with a synchronization between an on-premises Active Directory and Entra ID in place. Thanks to the magic of the Hybrid Configuration Wizard (HCW), this will behave as one organization.
HCW isn’t the only thing that makes a hybrid environment work. In fact, HCW will only configure both Exchange organizations to trust each other in many aspects to ensure that the different features work, but we still need the recipient objects to be synced between the two.
For that synchronization to take place, you need one more element in your topology, and that is Microsoft Entra Connect (this component changed its name several times, so you might know it as DirSync, AAD Sync or AAD Connect). Microsoft Entra Connect ensures that your objects are synced between your on-premises Active Directory and Entra ID. With the ‘Exchange Hybrid’ optional feature enabled (checked during the Microsoft Entra Connect configuration) we ensure that all of the Exchange properties any object might have, are included in the sync as well. From there, they are then automatically synced to Exchange Online Directory Service thanks to the ForwardSync and Dual Write processes we already mentioned.
So, ForwardSync and Dual Write form the synchronization engine we have in the service to keep the Entra ID and the Exchange Online Directory Services objects in sync, just like Entra Connect does. However, there’s a difference: while Entra Connect pushes changes to Entra ID, ForwardSync technically doesn’t push the changes from Entra ID to Exchange Online Directory Services, instead Exchange Online Directory Services will periodically query Entra ID and see if there are any changes that need to be synced, and if so, it will sync them.
Here’s a visual summarizing of all the pieces working together:
Object Types
Microsoft Exchange isn’t just about mailboxes, it also handles other objects like plain users that aren’t mail enabled, Mail-Enabled Users, groups, contacts, etc.
However, Exchange Online and Exchange on-premises differ in object types, and you may find some of them only available in one of those environments. Consider the image below as a summary where the left side shows Exchange on-premises object types, and the right side shows the Exchange Online ones:
While you can have a plain user on both sides, you are not going to find a remote mailbox object type in Exchange Online (at least not exposed to tenant admins), but you will in Exchange on-premises. The same applies to the Microsoft 365 Group showing up as a unified group in Exchange Online, while in Exchange on-premises it does not.
Another thing to consider is that even though you see the dynamic distribution groups on both sides, they are not synced by Entra Connect. Those in Exchange Online are pure cloud objects. The reason for this is quite simple. Dynamic distribution group membership is based on a particular filter, and if a dynamic distribution group was to be synchronized with the same filter, the membership would be different on both sides.
What defines the object type we might have on one side or the other? The answer is – attributes. Depending on the Microsoft Exchange Server version on-premises, one object might have more attributes than another.
Among the many attributes that make an object healthy, there are 3 specific ones that will define the object type, and those are the msExchRecipientDisplayType, msExchRecipientTypeDetails and msExchRemoteRecipientType, which will map to RecipientType, RecipientTypeDetails and RemoteRecipientType properties respectively. You’ll see those when you run cmdlets such as Get-Recipient, Get-MailUser or Get-RemoteMailbox:
Now that we’re talking about attributes: did you know that the only supported methods for creating or modifying an Exchange object are through Exchange Management Shell (EMS) and the Exchange Admin Center (EAC)? We don’t even support Set-ADUser even if it’s run from the EMS (unless explicitly under supervision of Microsoft support). The reason is because Set-ADUser, attribute editor, ADSIEdit or any 3rd party tool will just stamp the value you want on a specific attribute without validation while EMS and EAC will check if the value you’re attempting to stamp on a property is valid or in use by another object (email addresses are a perfect example). They will also make sure that any other required attributes are also changed (for example, enabling an archive by just stamping the ArchiveGuid is not everything that is needed to have archive working).
We are not going to go through all the mappings here, but you can see the most relevant ones below:
A MailUser in Exchange on-premises can either be a MailUser or a UserMailbox in Exchange Online (depending on whether it has an Exchange Online license assigned or not).
A RemoteMailbox object in Exchange on-premises is a sub-type of MailUser, however you won’t be able to list it by running a Get-MailUser. Use Get-RemoteMailbox instead. Ideally, you would end up seeing it as a mailbox in Exchange Online. Speaking of which, remember that not all mailboxes need to be licensed (shared or resource mailboxes), but regular mailboxes do, and if they don’t have a license assigned, you might not be able to see them as mailboxes, but as MailUsers instead. We’ll talk about this later.
You won’t see the Dynamic Distribution Groups being synced from Exchange on-premises to Exchange Online, so if you see a Dynamic Distribution Group on either side, that means the object is not synced but created on that side only, so don’t expect any changes applied to it to sync on the other.
Regarding Microsoft 365 Groups: Exchange on-premises doesn’t know about them at all, but if you have the Entra Connect Group Writeback feature enabled, it will create a mail-enabled Universal distribution group in Exchange on-premises for each Group. This is an optional feature you’ll have to manually enable in Entra Connect.
Provisioning
Let’s now jump into how provisioning works for the different object types in Exchange Online.
The easiest way to explain this is with Distribution or Security Groups. Let’s say you create a group with 3 members on-premises, and once Entra Connect syncs, it will be pushed to Entra ID and from there to Exchange Online Directory Services via Forwardsync/DualWrite. Sounds easy, right? Synchronizing a group with 3 members will go through sub-steps on Entra ID. One of them is called ‘normalize’, and that step will make sure to break one task into simpler ones.
Taking the group I just mentioned, the single operation will break into 2 different tasks: the group creation and adding the members to it. Adding members will also break into 3 actions, one for every user to be added add as a member of the group.
Provisioning mailboxes – things to note:
Source of Authority
Before we even start talking about mailbox provisioning in a Microsoft Exchange hybrid environment, we must understand the main advantage of this environment is to be able to create and manage all identities on-premises. To avoid falling into conditions where the same object could be updated in different directories, there must always be a side that will prevail over the other. This is known as Source of Authority (SOA) and in this environment type (hybrid, with Entra Connect synchronizing Exchange attributes) your on-premises directory will be the SOA (with very few exceptions). Keep this in mind from now on, as that will be key to understand certain behaviors.
30-day grace period
Whether we provision a new remote mailbox on-premises or migrate a mailbox that never had an Exchange Online license to Exchange Online, the service will allow a period of 30 days for the admins to assign an Exchange Online license to the user. Note that this is not a way to get 30 days of service for free, but to help customers with their own provisioning defined processes and give them some time to assign an Exchange Online license to a regular mailbox instead. Our recommendation is to ALWAYS assign a license as soon as you see the mailbox provisioned in Exchange Online, and in migration scenario, even before the move is injected.
Remote Routing Address and other properties
The next thing to know about is who is responsible for stamping the remote routing address (this is the @YourDomain.mail.onmicrosoft.com) on an Exchange on-premises recipient. Exchange on-premises will always be the one responsible for this depending on the following scenario:
For all users using Exchange on-premises:
The default email address policy is modified by the Hybrid Configuration Wizard (HCW) to include the YourDomain.mail.onmicrosoft.com address as a secondary address for all on-premises recipients. If this Email Address Policy is enabled, there’s no other policy with a higher preference that would match the object, and of course the recipient EmailAddressPolicyEnabled property is set to ‘True’, the address will show up under the ‘EmailAddresses’ property of the user (which maps to the ‘proxyaddresses’ AD attribute).
When a mailbox gets migrated to Exchange Online:
The ‘ExternalEmailAddress’ property for the on-premises user (which maps to ‘TargetAddress’ AD attribute) will be stamped with the remote routing address value (which should be present already in the EmailAddresses for the given user) by the Mailbox Replication Service (MRS) once the hybrid migration of on-premises mailbox completes.
When a remote mailbox is being provisioned from on-premises:
Regardless of how you provision the remote mailbox (either using the Enable-RemoteMailbox, New-RemoteMailbox or the EAC) you need to specify the ‘RemoteRoutingAddress’ mandatory parameter with the YourDomain.mail.onmicrosoft.com address, and this will be shown on the ExternalEmailAddress property and under EmailAddresses as a secondary address when you run the Get-RemoteMailbox cmdlet from your Exchange on-premises.
The remote routing address is important as it will allow other Exchange-related services like Autodiscover, Hybrid Mailflow (Transport) or Free-busy requests to be redirected to Exchange Online.
Now, don’t confuse the remote routing address (YourDomain.mail.onmicrosoft.com) with the Microsoft Online Email Routing Address – also known as MOERA – (YourDomain.onmicrosoft.com). While the remote routing address is stamped by Exchange on-premises, the MOERA will be stamped by Entra ID, except when you create the user in Entra ID directly without an Exchange Online license assigned at that very moment) in which case no MOERA will be stamped on the object).
Another important property is the LegacyExchangeDN which will be written back to the on-premises remote mailbox object as an X500 address when you have a mailbox in Exchange Online that is synced from on-premises.
The ExchangeGuid will be generated by the Microsoft Exchange organization that first creates the mailbox:
Exchange Online if the mailbox was provisioned from on-premises by running the New-RemoteMailbox, Enable-RemoteMailbox from the on-premises Exchange Management Shell, or creating an Exchange Online mailbox from the Exchange Admin Center.
Exchange on-premises, if you create a mailbox locally and then decide to migrate it to Exchange Online.
The ArchiveGuid property will always be generated by Exchange on-premises regardless of what Exchange organization will be hosting it (on-premises or online), and this will be synced to Exchange Online.
Any provisioning or changes in Exchange Online can take up to 24 hours. We do a very good job trying to make those almost instantly, but sometimes we may see some delays due to resources being consumed more than usual. See this article for more information and a link to a self-serve diagnostic to help you further.
And with that, we come to the end of part 1 of the provisioning series articles. Stay tuned for part 2!
Alberto Pascual Montoya and Ben Winzenz
Microsoft Tech Community – Latest Blogs –Read More
New Microsoft-compliant Contact Editor now available on Outlook Mobile
We are happy to announce the launch of the new contact editor in Outlook Mobile, designed to enhance your contact experience on both iOS and Android platforms. This editor enables users to seamlessly add and edit contacts in a compliant manner and will replace the use of the devices’ native editors in Outlook Mobile.
We have received feedback about compliance concerns in the previous native Android and iOS editors related to managing and enforcing Intune policies for contact editing in Outlook Mobile. Many users have also shared feedback about the inconsistent experience across different devices with the former editors.
You asked and we delivered!
We have heard your feedback and are thrilled to introduce a solution that brings several benefits to enrich your contact editing experience:
Compliance: Users can now efficiently manage their contacts in Outlook Mobile using the editor, while ensuring compliance with their chosen Microsoft Intune policies.
Coherence: Enjoy a consistent contact-editing experience across iOS and Android, as well as with the editors on Outlook.com and the new Outlook app for Windows.
Easy to organize: Categories offer an easy, flexible way to sort your contacts. Think of categories as tags that you can apply to group your contacts into meaningful clusters.
Note: Contacts previously created through the earlier native editors will remain accessible for viewing and editing within the Outlook mobile and web platforms.
How can you access the new Contact editor?
Once you have updated your Outlook Mobile app to the newest release, there are several ways to find your way to the Contact editor:
1.’New Contact’ in Contacts tab
Click on ‘Apps’ in the bottom panel to navigate to the Contacts tab. Then, click on ‘New Contacts’.
2. ‘Create’ in People section in Feed tab
Navigate to the Feeds tab from the bottom panel and then click on ‘Create+’.
3. People Card
Click on ‘Add to Contacts’ or ‘Edit Contact’ from a People Card.
4. ‘Scan a business card’ in People section in Feed tab (for Android users only)
Navigate to the Feeds tab from the bottom panel. Click on ‘Create+’ and choose ‘Scan Business Card’. Use the camera that pops up to upload a photo or take a new one of a physical business card. The card details will automatically appear pre-filled in the editor.
Let us know what you think!
We would love to hear your feedback! If you have any suggestions, questions, or issues you would like to report, please leave a comment below or email us at contacteditorfeedback@service.microsoft.com.
Microsoft Tech Community – Latest Blogs –Read More
Matlab running minimised using task scheduler influences image plots
Hi, I have been running a matlab script on a daily basis using windows task scheduler for the past few weeks and have noticed that the output image plots appear compressed (the arrows and contours are squished together, implying some sort of scale issue(?)) when compared with running the same script with matlab already running on my desktop. My script does specify the dimensions of the figure, but these seem to be ignored. Is there a way to correct for this? Related, if I can resolve the former issues, is there a way to force Task Scheduler to run matlab so that it is maximised (not behind the scene).
I’m using the following in Task scheduler to initiate my script:
matlab -r "cd(‘C:MatlabScripts’); run scriptname.m; pause(10)"
Thank you for any thoughts on this,
JonHi, I have been running a matlab script on a daily basis using windows task scheduler for the past few weeks and have noticed that the output image plots appear compressed (the arrows and contours are squished together, implying some sort of scale issue(?)) when compared with running the same script with matlab already running on my desktop. My script does specify the dimensions of the figure, but these seem to be ignored. Is there a way to correct for this? Related, if I can resolve the former issues, is there a way to force Task Scheduler to run matlab so that it is maximised (not behind the scene).
I’m using the following in Task scheduler to initiate my script:
matlab -r "cd(‘C:MatlabScripts’); run scriptname.m; pause(10)"
Thank you for any thoughts on this,
Jon Hi, I have been running a matlab script on a daily basis using windows task scheduler for the past few weeks and have noticed that the output image plots appear compressed (the arrows and contours are squished together, implying some sort of scale issue(?)) when compared with running the same script with matlab already running on my desktop. My script does specify the dimensions of the figure, but these seem to be ignored. Is there a way to correct for this? Related, if I can resolve the former issues, is there a way to force Task Scheduler to run matlab so that it is maximised (not behind the scene).
I’m using the following in Task scheduler to initiate my script:
matlab -r "cd(‘C:MatlabScripts’); run scriptname.m; pause(10)"
Thank you for any thoughts on this,
Jon automatically run script problem with plots MATLAB Answers — New Questions
Trouble with jsondecode() and jsonencode()
I have a JSON file. I am trying to test the MATLAB functions before using them. So I loaded it
str1 = fileread(‘json_filename1.json’);
mydata1 = jsondecode(str1)
str2 = jsonencode(mydata1)
fid = fopen(‘json_filename2.json’,’wt’)
fprintf(fid,str2)
fclose(fid)
Then I go to the online JSON file editor: https://jsoneditoronline.org/#left=local.jagoxe to load both files. I am able to load ‘json_filename1.json’ but I can’t load ‘json_filename2.json’ correctly. I got the following error message:
Failed to switch to "tree" mode because of Invalid JSON:
Parse error on line 1:
…,"errorDescription":"CreateACPath Execut
———————–^
Expecting ‘STRING’, ‘NUMBER’, ‘NULL’, ‘TRUE’, ‘FALSE’, ‘{‘, ‘[‘, got ‘undefined’
It looks like either jsondecode() or jsonencode() has something wrong.
Also, when I used strcmp(str1,str2), I saw a lot of difference between them.I have a JSON file. I am trying to test the MATLAB functions before using them. So I loaded it
str1 = fileread(‘json_filename1.json’);
mydata1 = jsondecode(str1)
str2 = jsonencode(mydata1)
fid = fopen(‘json_filename2.json’,’wt’)
fprintf(fid,str2)
fclose(fid)
Then I go to the online JSON file editor: https://jsoneditoronline.org/#left=local.jagoxe to load both files. I am able to load ‘json_filename1.json’ but I can’t load ‘json_filename2.json’ correctly. I got the following error message:
Failed to switch to "tree" mode because of Invalid JSON:
Parse error on line 1:
…,"errorDescription":"CreateACPath Execut
———————–^
Expecting ‘STRING’, ‘NUMBER’, ‘NULL’, ‘TRUE’, ‘FALSE’, ‘{‘, ‘[‘, got ‘undefined’
It looks like either jsondecode() or jsonencode() has something wrong.
Also, when I used strcmp(str1,str2), I saw a lot of difference between them. I have a JSON file. I am trying to test the MATLAB functions before using them. So I loaded it
str1 = fileread(‘json_filename1.json’);
mydata1 = jsondecode(str1)
str2 = jsonencode(mydata1)
fid = fopen(‘json_filename2.json’,’wt’)
fprintf(fid,str2)
fclose(fid)
Then I go to the online JSON file editor: https://jsoneditoronline.org/#left=local.jagoxe to load both files. I am able to load ‘json_filename1.json’ but I can’t load ‘json_filename2.json’ correctly. I got the following error message:
Failed to switch to "tree" mode because of Invalid JSON:
Parse error on line 1:
…,"errorDescription":"CreateACPath Execut
———————–^
Expecting ‘STRING’, ‘NUMBER’, ‘NULL’, ‘TRUE’, ‘FALSE’, ‘{‘, ‘[‘, got ‘undefined’
It looks like either jsondecode() or jsonencode() has something wrong.
Also, when I used strcmp(str1,str2), I saw a lot of difference between them. json MATLAB Answers — New Questions
Protect Sheet with Different User Permissions
Hello,
I am working on a workbook with a lot of information and a lot of users. I have a primary worksheet that I want to lock down, say that all the data is in the range of A1:G100 of Sheet1. I want to allow only a small portion of the users, call them Group A, to edit the contents of the primary worksheet. Adding rows, deleting rows, selecting cells and changing their values, working in the worksheet like there are no protections on it. Then I want the rest of the users, call them Group B, to be able to view the sheet and sort the data. Just sorting, not editing, adding, deleting, formatting, or anything other than sorting using filters. I’ve been struggling to come up with the right combination of Protect Sheet settings and Allow Edit Ranges and Permissions settings. If anyone could help with this, that would be great!
Summary
Group A: Edit cells, add/delete rows, do whatever they want with the worksheet
Group B: Only sort/use filters, nothing else
Hello, I am working on a workbook with a lot of information and a lot of users. I have a primary worksheet that I want to lock down, say that all the data is in the range of A1:G100 of Sheet1. I want to allow only a small portion of the users, call them Group A, to edit the contents of the primary worksheet. Adding rows, deleting rows, selecting cells and changing their values, working in the worksheet like there are no protections on it. Then I want the rest of the users, call them Group B, to be able to view the sheet and sort the data. Just sorting, not editing, adding, deleting, formatting, or anything other than sorting using filters. I’ve been struggling to come up with the right combination of Protect Sheet settings and Allow Edit Ranges and Permissions settings. If anyone could help with this, that would be great! SummaryGroup A: Edit cells, add/delete rows, do whatever they want with the worksheetGroup B: Only sort/use filters, nothing else Read More