How should I store employee data with Azure AD? - azure-active-directory

I am setting up a new company and we are using Azure AD. We are remote-first and cloud-only. We do not and will not have an on-premises Active Directory controller.
How is it recommended to store employee data such as birthday, hire date, and social security number? It is unclear how to extend the schema. When I try to fetch a birth date using the Graph API, I get "Error message: This operation target is not yet supported.". When I extend the schema using "External Identities -> Custom User Attributes", I don't see a way to edit those inside the Azure AD portal.
My administrative interface is a Java application built using the Microsoft Graph API. It works fine for the standard fields (e.g., displayName, givenName, surname, etc.).
I am currently integrated with a PostgreSQL database in Azure using the authentication that works against the Azure AD API. That works fine and I can put employee metadata there, but is is not clear if I should.

We can store the employee data like birthday and hire date in azure AD through couple of ways.
One way is to use azure ad connect (if you have on premise active directory) and the other way is using schema extensions. You need to use Microsoft Graph API to work with azure ad schema extension, there is no direct option to extend the schema from azure portal.
Please follow the steps in this doc to Create schemaExtension
Schema extensions are supported for following resource types.
1.contact
2.device
3.event on a user or Microsoft 365 group calendar
4.post of a Microsoft 365 group
5.group
6.message
7.organization
8.user user resource type
Here is the reference article written by #Toni PohI, About Azure AD schema extension Working with Azure AD schema extensions and Microsoft Graph

Using AAD Connect you can flow an extension attribute from AD to the MV attribute employeeHireDate which will export successfully to AAD.
Make sure your extension attribute uses Generalized-Time syntax. These dates are strings in the format "YYYYMMDDhhmmss.0Z".
Then create an inbound sync rule to populate employeeHireDate
This will flow to AAD. This was completed with AAD Connect Version: 2.1.16.0

Related

Add user properties to Azure Active Directory for SCIM provisioning (HiBob)

I'm trying to setup a user lifecycle flow that will allow me to create an Azure Active Directory user (Member, not Guest) when an employee is created in our HRIS tool (HiBob). There is a pre-existing integration which is enabled and allows us to get basic information (name, location, etc.).
In the HRIS system we also store some more unique data that I would like to be added to the users AAD profile (maybe an emergency contact for example) that we can then use to provision other applications (like Slack).
My issue is trying to create these custom property fields. I have read about Azure B2C as well as directory schema, custom security extensions and using MS Graph. None of these seem to be totally relevant to my situation.
FYI we are fully cloud, so Azure AD Connect is also not an option.
To store custom data in Azure AD objects such as users you can leverage Azure AD Directory Extensions in tandem with Azure AD Provisioning trough SCIM.

I'm trying to create scim integration. In Azure databricks email attribute is missing

I would like to test my scim integration with Azure Active Directory.
I created provisioning in DataBricks, but the list of attributes is missing email.
How do I add it?
Update after the answer was accepted: I was trying to use DataBricks in order to test my SCIM implementation for Azure. The right way is to create an app, edit mappings according to the needs and submit the app to the Azure AD.
Your question is unclear. How are you trying to provision from Azure AD to Databricks? You should be adding the Databricks Enterprise App from the gallery (see documentation for exact steps). The gallery app has the mappings preconfigured in a way tailored to Databricks - specifically, it's set to not attempt updates on userName or email attributes as both are immutable in the Databricks system.

Dynamics 365 Human Resource integration with Azure Active Directory

I am working on Dynamics 365 Human Resource implementation. Organization is using Office 365/Azure AD for internal user accounts. The requirement is to connect Azure AD with D365 HR in a way that whenever a new user is created in Active Directory the same user should also be created in D365 HR Users list. This should be done automatically. The objective here is to avoid manual user creation in D365 Apps.
Initially, I thought about achieving this with MS Flow with below approach:
Using Azure AD connector get list of Users in certain Group.
Using CDS connector get list of all Users in Dynamics.
Create new User(s) in CDS/Dynamics HR.
I have the basic understanding that D365 HR uses CDS to store all data but I can't seem to find D365 HR specific Users entity. Hence this approach fails.
So, my question is how to achieve such automatic integration?
I am open to custom development options but can't manage to think of a viable solution. Please share ideas! Thanks.
Azure AD is Microsoft's cloud-based identity and access management service. It is intended for app developers and Microsoft 365, Azure, or Dynamics 365 subscribers. So, each Dynamics 365 tenant is automatically an Azure AD tenant.
Kindly go through the documentation and check whether if it helps .
HR users and security aren't stored in the CDS today. There are ISV products that support the creation of a D365 HR user account (and automatic assignment of D365 security roles by policy) if you're interested in going this route:
http://www.elevate-hr.com/solutions/#_active-directory-integration
https://appsource.microsoft.com/en-us/product/dynamics-365-for-finance-and-operations/elevate-hr.active-directory-integration?tab=Overview

On-Premises User Profile Update Using Microsoft Graph API

we have a screen in our application that is used to update Azure AD users through Graph API. If users are created using Azure Portal or Graph API, I'm able to updated user profile using this screen.
But if the user is Created/Sync using AD Connect(e.g in case of O365 Users) while updating these Users Microsoft Graph returns following error:
Unable to update the specified properties for on-premises mastered Directory Sync objects or objects currently undergoing migration
I have following queries:
Is it possible to update a user through Graph API that is created from on-premises to Azure AD?
Is there any settings on azure portal or Ad connect that allow user to be
updated through Graph API?
Also How to tell the difference between if a user is created on-premises or on Azure AD through Microsoft Graph API. Any attribute in Microsoft.Graph.User Class?
To answer your questions:
No this isn't possible because of the way they are synced. If Microsoft would allow changes on both sides, it would have to implement some kind of duplicate change resolution system. So they just blocked changing properties except for some cloud only properties like licenses.
No there isn't because of the above reason
Yes there is, but it's kinda hacky.
To see if a Graph user is created through the sync you should request the User.Read.All scope for your application and then do a request to the Get user endpoint with the select all properties querystring ?$select=*.
The synced users should have the OnPremisesSamAccountName property amongh others that don't appear on a non-synced user.
Once you found out the user is an on-premise user, your application could do an update straight to your AD with the System.DirectoryServices.AccountManagement api.

Finding Azure AD Schema Extension AppId in Microsoft Graph

If one synchronizes custom attributes via Azure AD Connect, schema extensions are made to Azure AD and there is an associated application made in Azure AD with a DisplayName of "Tenant Schema Extension App".
Unfortunately, these extensions are uniquely named, as well with extension_AppIdGuid_attributeName.
With the Azure AD PowerShell module, it is easy enough to find this:
$ExtensionGuid = ((Get-AzureADApplication |
Where-Object {$_.DisplayName -eq "Tenant Schema Extension App"}).AppId).Replace("-","")
These can also be queried within the Microsoft Graph. However, I cannot find a mechanism within the Microsoft Graph to find what the AppId is.
I have queried:
/organization
/schemaExtensions
/$metadata
The Azure AD Graph seems to have the capability, but it is going away and the Microsoft Graph is the future. I want it there. Any help is appreciated.
You can find the Tenant Schema Extension app in Microsoft Graph via the following query:
https://graph.microsoft.com/beta/applications?$filter=displayName eq 'Tenant Schema Extension App'
Unlike the Azure AD Graph which Application object which has an id and an appId, the Microsoft Graph Application object only has an id property which corresponds to the appId value in the Azure AD Graph.
Note: As per the Microsoft Graph documentation for GET /applications you require any the following permissions:
Delegated (work or school account): Directory.Read.All, Directory.ReadWrite.All, Directory.AccessAsUser.All
Application: Directory.Read.All, Directory.ReadWrite.All

Resources