Hosk’s recommended Dynamics 365 and other articles October 2018

Quotes

Some solutions are so complex, only an architect could create them

There are two great days in a person’s life – the day we are born and the day we discover why. William Barclay

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – last 5 recommendations

Selected  HoskWisdom

  • To a developer, every problem looks like it needs code to fix it
  • All future development roads lead through CDS, PowerApps and Flow. So start heading in that direction now
  • Architecture is where the fun is, Development is where the pain is felt
  • You have to battle with code more than once, to make it maintainable
  • You’re only as good as the code you create
  • Projects approach methodology like people approach religion, they don’t implement all of it and use the bits they like
  • Write great code if you can, refactor when possible but get the job done
  • Technology should not dictate solutions, it should enable solutions

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

Advertisements

Dynamics 365 FastTrack Architect Bootcamp training in Frankfurt

The more you learn, the further you go #HoskWisdom

One of the great things for working for Capgemini is they want individuals to grow and improve.  This means I get to go to training and events.  Early this year I went to Extreme 2018 in Dubrovnik

This week I am on the Dynamics 365 FastTrack Architect Bootcamp.  The course is run by some of the Fast Track engineers who work on Microsoft biggest projects as part of the FastTrack scheme.

Phil Hand will be presenting and I read a white paper from him which helped me create this blog post on solutions

CRM 2016 – What’s the best way to organise solutions in Microsoft Dynamics CRM  

FastTrack bootcamp is also available for Operations

What is FastTrack?

FastTrack is offered to larger customer (250 seats plus) and the FastTrack team get involved to guide the customer and partner to make sure the project is successful.

This page is offers a good overview of FastTrack and what it’s all about

FastTrack for Dynamics 365 is our customer success service designed to help you move to Dynamics 365 smoothly and confidently, so you can realize business value faster. When you participate in the FastTrack program, you will receive guidance on best practices and how to plan for successful rollouts. You will also learn ways to enable new users and expand capabilities – all at your own pace. Additionally, you will have access to Microsoft engineering resources committed to make your experience with Dynamics 365 a success.

The FastTrack offers skype sessions, workshops and regular touch-points to make sure the customer is on track.

If you are eligible for the FastTrack program then Microsoft will be involved in your project and help ensure the successful implementation of Dynamics 365 by using their FastTrack process and experience implementing Microsoft Dynamics 365.

Microsoft’s FastTrack team isn’t one or two people but many different experts.

Whats covered

It’s a 4 day intensive course, which covers most aspects of a Dynamics project

You can see the course agenda here

The highlights are

  • Dynamics 365 Online Architecture
  • ALM and Solution Release Management
  • Integration Architecture / Patterns
  • Data Migration Approaches / Patterns
  • Dynamics 365 Reporting Strategy / Architecture Patterns
  • Field Service Architecture / Best Practices
  • Project Service Architecture / Best Practices
  • Security and Data Modeling
  • Performance Optimization Best Practices
  • Unified Service Desk Architecture
  • Portal Architecture / Best Practices
  •  Microsoft Business Flow/Power App
  • Dynamics 365 Testing

Pictures of my adventure

Here are some pictures of my adventure in Frankfurt. I wondered around a lovely day in Frankfurt by myself and had some frites

Hosk art selfie

Art Museum

 The bridge 

Nice River

Statue

Massive Euro?

The Flight

Frankfurt river

Dynamics 365 Customisation and configuration – MB2-716 study notes

I studied for the latest Microsoft Dynamics 365 Customization and Configuration

certification, this is the 6th version I have passed.  Each time I take the certification I learn something new about Microsoft Dynamics, it’s limitations and how it works.

My previous study notes are here MB2-712 – CRM 2016 customisation and configuration Hosk study notes , the notes below are new things I learnt and built on top of the previous notes.  So if you are studying for the exam you want to read all of my study notes.

Business Process flows

  • Order of flows is used if multiple flows are available for your security roles
  • Users can switch Business process flows if their security roles can see multiple

Security

  • A team must belong to a business unit
  • A team can own records
  • Business units have a default team created by Dynamics 365, you cannot edit these or add/remove users.
  • You can add a custom control to data types – data and time, multi-line, single line
  • There are 9 entities enabled for auto numbering – contracts, cases, articles, quotes, orders, invoices, campaigns, categories and knowledge articles
  • If you enable Yammer you cannot disable it

Email

Different email architecture/Dynamics 365 mixes

  • Local exchange server – On premise Dynamics 365
  • Office 365 exchange – Dynamics 365 online
  • Office 365 exchange – Dynamics 365 on premise
  • Server side sync – Dynamics exchange integration allows appointments, tasks and contacts to be synchronized (optional)

Email clients

  • Dynamics 365 for Outlook Client
  • Dynamics 365 App for Outlook
  • Folder tracking

Entity

Entity properties which cannot be disabled once enabled

  • Business Process flows
  • Feedback
  • Notes
  • Activities
  • Mail Merge
  • Connection
  • Sending email
  • Queues
  • Change tracking
  • Offline capability for Dynamics 365 for Outlook

Entity properties you can disabled once enabled

  • Access Teams
  • Knowledge Management
  • Enable for SLA
  • Allow quick create
  • Duplicate detection
  • Auditing
  • Single record auditing
  • Multiple record auditing
  • Enable for phone express
  • Reading pane in Dynamics 365 for outlook
  • Use custom help

Folder tracking 

  • Folder tracking is tracking folders using server side sync and not limited to one email client
  • Folder tracking only works with server side sync
  • Folder tracking only works with exchange
  • Tracked folders work with Exchange Inbox rules
  • The tracking folders feature must also be enabled by your administrator
  • You can only track folders or subfolders inside your Exchange Inbox
  • You can set up multiple folders that link to the same regarding record
  • You can include an untracked folder inside a tracked folder
  • If you no longer need to track a folder, it’s a good idea to untrack it for performance reasons. To untrack a folder, remove it from the Folder-Level Tracking dialog box.
  • You can track emails only in folders under your Inbox folder in Exchange. Other folder emails cannot be tracked.
  • You can track up to a maximum of 25 folders per user account
  • Any manual changes done to the regarding object in the tracked activity records in Dynamics 365 will be overridden the next time server-side synchronization kicks in. For example, if you have set up a mapping between the Adventure Works folder and the Adventure Works account, all the emails in the Adventure Works Exchange folder will be tracked as activities in Dynamics 365 with the regarding set to the Adventure Works account record. If you change the regarding to some other record, it will automatically be overridden the next time server-side synchronization occurs. To change the regarding for any email, move the email to a different folder such as the Inbox.

App for outlook works at server level

Email Syncronisation

  • Dynamics 365 for Outlook
  • Server side sync
  • Email router is dead soon
  • Server side sync doesn’t need a users outlook to be open
  • Server side sync works with Dynamics 365 online or on premise and Exchange online or Exchange on premise. Any mixture of those
  • Mailboxes are created for users and queues
  • Separate options for incoming and outgoing email
  • You can set either or both incoming and outgoing sync to none
  • Forward Mailbox – you can set multiple users to be configured with a forward mailbox
  • Stop users synchronising with system settings à Email à incoming email and outgoing email to none

Mobile

  • Dashboards can be made available for tablets
  • In properties you can enable dashboard for tablets and individual sections for mobile
  • Only first 5 tabs or 75 fields/10 lists appear on mobile client
  • Set available on Phone checkbox to show/hide tabs in mobile
  • Collapsed tabs still count
  • Only 5 tabs will show even if it’s less than 75 fields
  • You have to put fields in the first five tabs for them to appear in a mobile client
  • Mobile can have specific mobile only controls (sliders)

Business rules

Business rules can

  • Add recommendation
  • Lock/Unlock
  • Show Error Message
  • Set field values
  • Clear field values
  • Set default values
  • Set business requirement level
  • Set Visibility (Show or hide fields)
  • Enable or disable fields
  • Validate data and show error messages
  • Create business recommendations based on business intelligence.

Business rules

  • Business rules can have 10 Conditional Branches
  • Business rule scope
    • All forms – all forms, quick create and main
    • Entity – can run form and server side.
    • Entity – server level will run on create or update
    • Entity – if server enable will run when data is imported
    • Single form scope – only runs for the specified form
    • To change scope of business rule you must deactivate first

Access teams

  • Sub-grid for Access Teams (must enable entity for access teams)
  • Access team templates will applying a standard set of privileges (read, write, delete, append, append to) rather than having to set this up for each individual user/team.
  • Access Team templates are enabled on an entity basis and you have to enable Access Teams on the entity in the communications and collaboration
  • When records are deactivated, access team permissions are not effected
  • Access teams don’t have security roles
  • Access teams can’t own records
  • Access teams are created and managed by CRM
  • An access team is created when you have added the first user
  • Access teams are not visible in default team views
  • Sharing records via access teams isn’t displaying in the sharing screen
  • Access teams can’t be used in resource scheduling
  • Multiple access teams can be linked to a single record
  • Access Team Templates, support dynamic record sharing. With the members of an access team being given privileges on specific records based on the access team template.
  • access teams do not have roles and cannot own record

Facts and stats about Access Teams, the bits below are useful for those study MB2-703

  • You can add more than one Access Team template for each entity
  • The default number of access teams templates for each entity is two
  • The number of access team templates you can have for each entity is controlled by the MaxAutoCreatedAccessTeamsPerEntity deployment setting.
  • MaxEntitiesEnabledForAutoCreatedAccessTeams deployment setting has a default value of 5.  This controls the number of entities it’s possible to enable for auto-created access teams.
  • You can change the MaxEntitiesEnabledForAutoCreatedAccessTeams , MaxAutoCreatedAccessTeamsPerEntity  only on Premise installations and you cannot edit them for Online.
  • A system generated Access Team isn’t created for each record until you add a user to the sub grid on the entity.
  • if you delete the team, this is the same removing all the members in the sub grid on the record.
  • if you change the access rights on Team Template this will only change the access right to new entity records/access teams.  Any records already created will use the previous set of privileges.
  • Access teams with Share access right ticked will mean any user who is in access team will be able to add (share) others to the access team for that record.
  • Users cannot grant privileges they do not have.  So a user can only add new members to an access team where the access team template has create privilege only if that user has the create privilege for the entity.
  • Access Teams created automatically by adding users to them are not shown in the system team views
  • Access Teams created automatically can be seen by doing an advanced find and select Team Type = access
  • Access Team created automatically have the is system managed field set to true
  • Access Teams can be un ticked on an entity (unlike Queues)
  • If you want to delete a Access Team Template you will need to remove all the sub grids using that specific Access Team Template before you can delete it.

Entity assets

Below are the following entity assets

  1. Forms
  2. Views
  3. Charts
  4. Fields
  5. Keys
  6. Relationships (1:N, N:1, N:N)
  7. Messages
  8. Business Rules
  9. Hierarchy Settings
  10. Dashboards
  • You don’t have select all the entity assets
  • You can add the entire entity by checking the Add All Assets Checkbox
  • You can manually select specific assets by selecting them
  • Fewer assets means fewer dependencies and quicker deployments

Business process flow

  • You must enable Business process flow on an entity
  • Once an entity is enabled BPF you cannot disable it.
  • Each entity can have no more than 10 activated business process flows
  • Multi-entity process can use no more than five entities.
  • A business flow has a primary entity but can span multiple
  • Branches can be only 5 levels deep

Business rules

  • Set scope to Entity if you want a business rule to run on the server, not just on the client side
  • Business rules are not triggered when you save a record
  • Business rules are triggered when a record is opened or when a field is changed which the rule conditions are set to check e.g Form OnLoad and Field OnChange
  • Business rules action will run only if condition is true

Rollup fields

  • Rollup fields recalculate once an hour
  • Rollup fields supported – Whole Number, Date and Time, decimal, currency
  • Maximum 100 per organisation
  • 10 rollup fields per entity
  • If you make a rollup for a currency field, it will create one for the base
  • Rollup fields not supported – Option set and Lookup
  • Aggregate value of records related to a specific record
  • Rollups fields are asynchronous, they don’t run in real time
  • Rollup fields can be run by workflows or business rules
  • Rollup fields can be refreshed manually or triggered by a workflow
  • Rollup Fields are automatically rolled up 12 hours after they are created
  • A workflow can’t be triggered by the rollup field updates.

Custom actions

Custom action Limitations

Highlights from the link above – click the link to see al

  • Actions are created using a Workflow entity record
  • Can be associated with a single entity or be global Can be associated with a single entity or be global (not associated with any particular entity).
  • Is executed in the core operation stage 30 of the event execution pipeline.
  • Supports the invocation of plug-ins registered in the pre-operation and post-operation stages of the event execution pipeline.
  • Is available through the Web API or svcand organization.svc/web endpoints.
  • Can be executed using a JavaScript web resource.
  • Always runs under the security context of the calling user.
  • Supports input and output arguments.
  • Isn’t supported with offline clients.
  • Can be invoked by a web service method call.
  • Can be invoked directly from a workflow.

 

Dynamics 365 Online Limitations

Highlights from the link above – click the link to see all

Database indexes

  • Need to be created by a Microsoft service engineer, create a support request

Fetch XML Limitations

(http://www.kingswaysoft.com/blog/2013/06/18/Limitations-with-CRM-FetchXML   )

  • 10 linked entities
  • No Right Outer Join
  • No SQL Functions
  • No Sub Queries
  • No support for Union
  • No Case/When type functionality
  • Can’t compare 2 fields directly
  • 50,000 records per query aggregate
  • 5,000 records per query (paging for more)

Business Rules

  • Can’t run when the record is saved
  • Can’t interact with tabs or sections
  • OnChange events are not triggered when business rules set a field value
  • Rules with invalid references are not ran, there will be no error message
  • Whole number fields with TimeZone, Duration, or Language format are not supported
  • Up to 10 if-else conditions per rule
  • Rule definitions are cached in the mobile app, must close and re-open the app for changes
  • Must create a separate rule to clear actions of a previous rule, if necessary

Calculated fields

  • Saved queries, charts, and visualizations can have a mx of 10 unique calculated fields
  • The calculated field values are not displayed in Outlook Offline mode
  • A max number of chained calculated fields is 5
  • Can’t refer to itself or have cyclic chains
  • Can’t access parental fields with a multi-entity Lookup
  • Sorting is disabled on:
    • A calculated field that contains a field of a parent record
    • A calculated field that contains a logical field (for example, address field)
    • A calculated field that contains another calculated field
  • Can only span 2 entities
  • Can’t trigger workflows or plug-ins
  • Can’t change an existing simple field to a calculated field
  • Duplicate detection rules are not triggered on calculated fields

Rollup fields

  • Max of 100 per organization
  • Max of 10 per entity
  • Can’t trigger workflows
  • Can’t be used in a workflow wait condition
  • A rollup over the rollup field is not supported
  • Can’t reference a calculated field that uses another calculated field
  • Can only apply filters to the source entity or related entities, simple fields or non-complex calculated fields
  • A rollup can’t be done over N:N relationships
  • Can’t be done over 1:N relationship for the Activity entity or the Activity Party entity
  • Aggregated under the system user context, all users see the same rollup field value

ExecuteMultipleRequest

Mutliselect Option Set

  • The field cannot be used in Business Rule, BPF, Workflows – Create n Update Step, Not available as filtering attribute in Plugin.

 

Hosk’s recommended Dynamics 365 and other articles September 2018

Quotes

The pain of legacy code never goes away

Writing code is a long lesson in humility #HoskCodeWisdom

 

Power is like being a lady… if you have to tell people you are, you aren’t.” – Margaret Thatcher

Articles of the Month

awesome-1

Great Dynamics 365 articles this month

Programming/Scrum

Other/Business/Leadership/Management

The Hosk – currently reading

The Hosk – has read and recommends

Selected  HoskWisdom from September

  • No Developer likes to be told they have ugly code
  • Meaning can come from great suffering, just ask anyone who has worked on an IT project
  • You can’t refactor code until you understand what it does
  • To many people try to do Agile when they should focus on being Agile #HoskCodeWisdom
  • The complexity of code is proportionate to the stress of supporting it #hoskcodewisdom
  • There is a game Microsoft likes to play with developers, They call it Master and Servant. It’s a lot like life and that’s what’s appealing

Last months Monthly articles

Last months recommended monthly articles

Hosk’s CRM Developer Articles

A collection of my favorite CRM Developer articles I have written

The new Microsoft Dynamics 365 release schedule is coming

You might have missed or ignored Microsoft’s post on the new update cadence because few people use the term update cadence.  What update cadence refers to is the NEW MICROSOFT DYNAMICS RELEASE schedule, the change is two major updates to Dynamics 365 online twice a year at the same time (in each region) with no way to opt out or schedule. WHAT!  You mean Microsoft Dynamics 365‘ in a region will upgrade at the same time potentially causing thousands of production instances to break and flood Microsoft support!  If the next release has as many bugs as version 9 it will be interesting. If your region is one of the later regions than it should contain fewer bugs, wooohoo.

Get up to speed

The video from Business Application summit goes through the changes and answers common questions
FAQ
Key points from the document above
For customers who are running older versions of Dynamics 365, we will continue to provide you with the ability to schedule an update to the latest version and want to make sure this effort is as seamless as possible through continuous improvements in our update engine. For Dynamics 365 (online) Customer Engagement applications, we sent update communications in May 2018 to all customers running v8.1 and have scheduled updates. Customers running v8.2 should plan to update to the latest version by January 31, 201 The release notes for the October 2018 update will be published on July 23, 2018. Will I still be able to schedule the major updates? Yes, we will provide an update window within which you can schedule a major update. If you don’t set a time within the window, Microsoft will schedule an automatic update for your organization and communicate the date.
useful articles These articles give a good summary of the changes

No one left behind

The new release cadence will make sure no customer gets left behind (even if they want to) it forces updates in October and April.  You won’t be able to opt out.. Why would you force everyone to get the new version of Microsoft Dynamics 365 at the same time?  It’s much easier to find and fix bugs if everybody is on the same version, this should cut the number of calls Microsoft support gets for fixed bugs. To help Microsoft will publish release notes months before the update happens and you can disable disruptive features.

How it works now

Microsoft Dynamics 365 has 2 major releases per year, you can opt to only one of these but you have cannot miss two.  You can request when you want your Dynamics instance upgraded and then book your date. The downside is in Version 9 Microsoft added loads of bugs and it was not possible to test the upgrades before.  The method we used to do this was to upgrade a sandpit environment and test the functionality.  This enabled us to upgrade JavaScript, plugins and check the forms in sandbox instance before we upgraded production. We could only test production when Microsoft upgraded it, the sandpit environments should be the same, each Dynamics environment is different.  Environment settings are different, you can’t copy the server settings and you can’t copy database indexes.  For big Dynamics database it’s difficult to copy the data and you rarely want developers viewing production data.  Microsoft work in a single instance level but with Dynamics 365 online you have a groups of instances.

How it will work

The two major releases are mandatory and not optional.  You cannot opt out of accepting a major release, you can opt in to take earlier but on a date specified by Microsoft they will update Dynamics 365 online in a region.
  • Release notes are available before time
  • You can update sandbox instances before
Companies can test the functionality before on a sandbox and read the release notes to prepare.  The downside is you can’t miss a release and you can’t schedule it to later, this means companies will need to test earlier and test quickly.

Why are they changing

Microsoft says the reasons for changing
  • Lower Supportability costs
  • Early visibility and access to updates
  • Increased innovation
You can to opt-in to new features and have better performance and reliability e.g. they release the functionality but don’t force you to use it.  Microsoft will keep API’s and features backwards compatibility.

Hosk thoughts

It will be easier for Microsoft to support everyone if they are on the same version, more instances will test newer versions. In my experience it wasn‘t new features that caused problems it was the bugs in existing functionality.  Version 9 saw Microsoft add bugs into Solution importing, stage for upgrade, auditing, performance issues. Microsoft moving to continuous deployments and SAFE deployments are a step in the right direction and bringing better practices.  Early testing of updates with companies who have opted in for 1st deployments and Microsoft.  With more deployments Microsoft should fail faster and fix problems quicker. The Admin opt-in to try new features is interesting, it’s for major disruptive features!! the wording scares me. Microsoft are supporting production Dynamics 365 implementations and customers business. In Version 9 there has been a significant increase in the number of bugs raised to Microsoft.  I have never known so many projects to have problems with Microsoft Dynamics, in quantity and severity of bugs.  Some bugs seem so obvious that no one could have tested the functionality. I assume these problems were due to infrastructure changes made by Microsoft.

How will developers need to change

Developers must read the release notes, all 200 plus pages of release notes to understand the changes.  Microsoft proposed new features but then pulled them at the last-minute, will this happen? Release notes are living documents, constantly being updated, so you might read the notes and then next time you read the notes they could have changed.

Testing

Microsoft mentions investment in automated testing such as Easy Repro.  Capgemini Dynamics team have used Easy Repro on projects, read more in the posts below

Questions

They scheduled the version 9x release for July but ended up being released at end of November, how will this slippage and version content work now they are being transparent and showing what they will release and having a fixed date? On the Q&A Microsoft want to know the challenges of upgrading everyone on a set a date with no way to delay it? The time and cost of testing production and the risk of Microsoft breaking production systems by adding bugs.  Microsoft asking this question makes me wonder if they understand the disruption releases cause and the speed support takes to resolve issues.  In the Q&A it felt Microsoft thought unsupported customisations caused the problems but common problems on major upgrades is Microsoft breaking fundamental functionality.

Conclusion

Early release notes are living documents which could change and update.  The previews are useful and continuous delivery should remove barriers to Microsoft finding and fixing bugs quickly (if they have the resources to do so). The plan seems good, but it depends on Microsoft execution.  It’s good Microsoft is getting users to sign up for early release and not using everyone to test their new functionality. Microsoft says they won’t leave anyone in a broken a state, lets hope so.

The pressure of IT projects make people doubt themselves at the time they need to believe in themselves

The pressure of IT projects make people doubt themselves at the time they need to believe in themselves #HoskCodeWisdom

It’s easy believing your plan is the right thing to do before the start but when it begins, money is being spent pressure builds and those easy decisions suddenly become scary decisions.

When the pressure is on, people can doubt decisions because now decisions carry consequences but it’s at this moment you need to believe in your yourself and your decisions.

During a project lots of people have opinions,  question decisions and their will be a clamour to decide with guaranteed outcomes.  You can mitigate the problem by making sure you are using the correct criteria for the decision.  The criteria you use to decide is as important as the decision.

Complex decisions contain risk, the result is in the balance and there is a possibility of making the wrong decision.

Don’t fear being wrong

Making the wrong decision or making a mistake is part of the process of getting it right.

You make wrong decisions, live with it, focus on learning, improving and using the feedback to move in the right direction.

This is the time you need to believe, make sure you can justify the criteria, decisions and go for it.  You make the decisions with the information you had at the time, the right decision is only obvious after the outcome.

It’s important for the project to avoid a blame culture and ensure people are not afraid of making mistakes.  You want people to voice their opinions and suggest what they think is right, not scared to speak up.

Wisdom of crowds

Another area decisions are difficult is when a decisions conflicts with the majority, status quo or the way things were previously done.  People are wary of change and are reluctant to support it but there are circumstances when change is needed.  Focus on the facts and highlight the assumptions, this allows you make decisions based on facts not opinions or beliefs.

I will finish with a quote from the zen pugilist Mike Tyson

Everyone has a plan ’till they get punched in the mouth. Mike Tyson

Good code is like underwear. Simple, short and and a joy to look at

Good code is like underwear. Simple, short and and a joy to look at #HoskCodeWisdom

Developers write complex code because they don’t have enough time to write simple code.  To get to a place to write simple code you need to have understood the key requirements and create a simple design.

When explaining a subject, an expert identifies the key points, the hierarchy of knowledge and can explain it.  People who don’t understand a topic jump between points, use 20 words when 5 will do and repeat themselves.

The difference between complex code and simple code is noise; the purpose of the code is unclear with unnecessary steps.  Simple code has clarity, it’s concise and written with a purpose.  When designing code you create excess because you understand the problem whilst you solve it, the design evolves as with your understanding.

Developers skip the design stage and move straight to writing code, it gives the illusion of progress.  The developer learns the solution but the more thought you put into the problem the clearer the solution becomes.  Learning the needs half way through leaves you in a dilemma to adjust what you have or start again.

Writers should not publish an first draft of writing, developers should not release an first draft of code.  You should release when it’s ready, not what you have.

Simple code is created by developers who care about quality, who care about the developers read, maintain and extend it.  Clean code is not written by accident.

Sometimes the most productive day as a programmer is the day you remove hundreds of lines of code and refactor a large confused class into small focused methods

I finish this post with a KISS – Keep it simple stupid

Further reading