<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
</style><p><strong>In this guide we will cover:</strong></p><p><strong>- What is the Exchange Integration?</strong></p><p><strong>- How to connect to the Exchange Calendars integration</strong></p><p><strong>- Immutable IDs and Webhooks</strong></p><p><strong>- Importing Existing Calendar Entries</strong></p><p id="isPasted"><strong>- Inbound and Outbound Requests Tab </strong></p><p><strong>- Using Exchange Calendar</strong></p><p><strong>- Common errors</strong></p><p><br></p><p><br></p><p><strong id="isPasted"><span style="font-size: 14pt;">What is the Exchange Integration?</span></strong></p><p id="isPasted">Halo can sync appointments with your Exchange/Office365 calendars, and this can be restricted in different ways.</p><p><br></p><p>This guide covers how to connect to the Exchange Calendars integration using the Microsoft Graph API connection method. If you are connecting using either Exchange Web Services via App Impersonation (API/Halo Integrator) or Exchange Web Services via Delegate Access (API/Halo Integrator) you will need to follow our article <a data-fr-linked="true" href="https://usehalo.com/haloitsm/guides/968" id="isPasted" target="_blank" rel="noopener noreferrer"><strong>here</strong></a>. </p><p><br></p><p><strong><span style="font-size: 14pt;">How to connect to the Exchange Calendars Integration</span></strong></p><p>Start by heading to Configuration > integrations and enable the integration module. Once enabled click into the module to begin configuration. </p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQ0YzU3ZTVhLTQzYjYtNGQ0YS1hMjZkLTFiNjU5ZmYyNjljMiJ9._iNlBcY-eaaaXipJR1OVAZk2lTBVCWwpEp0y6hxZTIk" class="fr-fic fr-fil fr-dib" width="128" height="162"></p><p><strong><span style="font-size: 10pt;">Fig 1. Enable integration module</span></strong></p><p><br></p><p>Choose 'Microsoft Graph API' as the connection method. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZjYjIxNjEyLTE5NDktNGIyYy04ZmVlLWI3ODc2NDAxMzQxNyJ9.gGgY4BEHHMn5WFBmOlLp4UghpSqpPxqBgL-ZjISck3g" class="fr-fic fr-fil fr-dib" width="1214" style="width: 1216px; height: 499.324px;" height="499"></p><p><strong><span style="font-size: 10pt;">Fig 2. Exchange Calendars configuration </span></strong></p><p><br></p><p> When using this connection method there are three connection types you can use:</p><ul><li>Option 1: Use an Azure application with application permissions</li><li>Option 2: Connect to a single account which has delegate access to each agent's calendar </li><li>Option 3: Each technician connects to their Exchange account individually </li></ul><p>You will need to connect using one of these three connection types, we will cover how to do this in the guide. For connection, you will only need to follow the section relevant to the connection method you are using. Once you have connected there is some additional information around exchange calendars relevant to all connection methods. </p><p><br></p><p><br></p><p style="margin-left: 20px;"><strong id="isPasted"><span style="font-size: 12pt;">Option 1: Use an Azure application with application permissions</span></strong></p><p style="margin-left: 20px;">This option is recommended as it gives permissions to the application, which stops the need to have delegate access to every user. An Azure application with permissions will need to be configured for this.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><em>Note: If you are looking for tighter security measures the next connection option (each technician connects to their account individually) may be more suitable as this limits the risk of credential compromise.</em></strong></p><p style="margin-left: 20px;"><strong><em> </em></strong></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY1ODMwODdmLWQxZjAtNDE2My1hZjVjLWY2ZTVjNTY0MmJmZSJ9.bDwveFePb56nyseC1ypOIJURyeFioKAsr2vtTrPCfwE" class="fr-fic fr-fil fr-dib" width="574" style="width: 576px; height: 270.192px;" height="270"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 3. Connection type using an Azure application with application permissions</span></strong></p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Azure App Registration</span></strong></p><p style="margin-left: 20px;">Firstly, you will need to set up an App Registration in Microsoft Azure. This can be done by navigating to the App Registrations tab of Azure and selecting new registration. The only thing you will need to set up here is the access type (single tenant) and name. Once this registration is complete you should keep this window open as you will need to refer back to the App registration when setting up your calendar integration.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">To create a new app registration, head to <a href="https://portal.azure.com/" rel="noreferrer" style="box-sizing: inherit; color: rgb(15, 97, 161); background-color: rgb(255, 255, 255); touch-action: manipulation; text-decoration: underline; cursor: pointer; font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal;" target="_blank">https://portal.azure.com</a> then click into the Microsoft Entra area.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhZmE2NTEzLWZlZmQtNDc3Yy1iNDFkLTZiYTRmMzBmM2NmYyJ9.vFnXdl5Z55xFcl189vYWoQKnJKrMSvHU9xlGa-PlXL0" width="350" height="352" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 4. Microsoft Entra area</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Then create a new registration.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjlhNTU1NDg0LTNlYzctNDFjNi05MWYyLWM5OTU0NTAyZGMzOCJ9.ZgwTY97ALRo0pzREd8WTw9qW1uL5zwxbpbaH7snFOqc" width="990" style="width: 990px; height: 581.226px;" height="581.226" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 5. Create a new app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Give the app a name and set the support account type to be 'Accounts in this organizational directory only (Single tenant). </p><p id="isPasted" style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImJkOWY5YjI2LWIzOTYtNGQyMS1iMGQ0LTc4MTYwZDI4MjQxYSJ9.WC4vgYSXqAHeJxM6EmmwjGzTCq1oM7rndaVmnBaWM_A" class="fr-fic fr-fil fr-dib" width="854" style="width: 856px; height: 490.847px;" height="491"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 6. New app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Register the application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now that an application has been registered, you must give it the relevant permissions required by the integration. In your new application, go to the API Permissions tab to get started. You should see your list of current permissions will be listed, along with options to manage these. Select the option to add a new permission, and choose Microsoft Graph from the available APIs.</p><p style="margin-left: 20px;"><strong><br></strong></p><p style="margin-left: 40px;"><strong>API Permissions needed: </strong></p><p style="margin-left: 40px;"><strong>Remove user.read </strong></p><p style="margin-left: 40px;"><strong>Add Calendars.ReadWrite (Application)</strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once all permissions have been chosen, click the "Add Permissions" button to incorporate them into your application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once the permissions are added you will need to grant admin consent to the permission. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now you will need to generate a secret for the application. Navigate to the "Certificates & Secrets" tab of your App Registration in Azure. Add a new secret, providing a desired name and setting the expiration date. Save the changes. Take note of the secret value, as this will be used in Halo to access your App Registration. Store the secret value securely, as Azure only provides it once</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjFhZTE2MTc2LTljN2UtNDhjNC05Y2NhLTU4NGU1MTM3NWFkNyJ9.jrhb0hDJ6wtXEN88QXX2TE7zOfIum7nZTayoQ3fjkTg" class="fr-fic fr-fil fr-dib" width="1083" height="331"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 7. Generate new secret</span></strong></p><p style="margin-left: 20px;"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjAzMTdiYmViLTZjYzMtNGUyNy05ODk0LTRiY2IyNTY1NmE0NSJ9.Bf_fjmg7IoG_aFhegU_hcEWu8FeXVdkF1eeXSesJfpE" width="895" height="178" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; max-width: calc(100% - 10px); min-width: 10px; color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 897px; height: 178.183px;" id="isPasted" class="fr-fic fr-fil fr-dib"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 8. New secret</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now copy the Application (Client) ID, Tenant ID too.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><span style="color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA5MTgwZjUzLTc5YzgtNGE3My05YjA2LTJkOTk1NjE3MmI0NSJ9.LcYxH67yzEaFG_QjhkhRdCO-1W8a-1dxS1PTkF8ys84" width="894" style="width: 896px; height: 232.36px;" class="fr-fic fr-dii" height="232"></span></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 9. Application and tenant ID</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Head back to Halo and paste these values into the corresponding fields on the Exchange calendars integration page. </p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE5Mzk1ZGMxLThkNzAtNDVmMi05OTZjLWFiMzdhYTQ2MDMyMiJ9.6KCUCZjyh4cjxrVlSuU21bE1ogaDG9keF2EMNqu3tRo" class="fr-fic fr-fil fr-dib" width="831" style="width: 833px; height: 526.883px;" height="527"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 10. Application details in Halo</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Be sure to set the Microsoft authority you are using too. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">You will now be connected. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Enable appointment Syncing</span></strong></p><p id="isPasted" style="margin-left: 20px;">Now you have connected head to the 'Syncing Appointments to Exchange' tab and use the button 'Enable for all Agents' to enable the option of calendar syncing for everyone. </p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjRiNWEzNDExLTQ2OTQtNDI5OS1iOGE0LTNlZGZkNDhkNjIzMCJ9.1U3_hbMJHPDTHSn22U-S3v9NwvpNoYkFfDgS_zQ5N8M" class="fr-fic fr-fil fr-dib" style="width: 925px; height: 366.509px;" width="1217" height="483"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 11. Enable appointment syncing</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong>Owner override for new appointments:</strong> An email address can be entered here to have all appointments created in Exchange from Halo appear on this agent's calendar with the agent who created the appointment as an attendee. Meeting invites will be sent from the overriding account. This means that you can enter a shared calendar email address for appointments to be synced to a shared Exchange calendar. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;" id="isPasted"><strong>Update scheduler Appointment when linked Appointment is updated: </strong>This applies if using a central "scheduler" calendar. When enabled, changes made by the person who did not schedule the appointment can be reflected in the scheduler's appointment (i.e. if person B is an attendee to scheduler A's appointment, B making a change to the appointment will update it for scheduler A.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong>Use Halo creation method for recurring appointments (v2.236+):</strong> When enabled recurring appointments will be created and managed in Halo, rather than sending the recurring master to Exchange to create the series. The individual appointments in the series will then sync to Exchange separately. This means all the individual appointments will show in both Halo and Exchange.</p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><strong style="box-sizing: inherit; font-weight: 700; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" id="isPasted"><span style="box-sizing: inherit; font-size: 12pt;">Option 2: Connect to a single account which has delegate access to each Agent's calendar</span></strong></p><p style="margin-left: 20px;">The following video contains a walkthrough on how to connect to Exchange calendars using this connection type. Written steps to connect are also provided below.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span class="fr-video fr-deletable fr-fvc fr-dvb fr-draggable" contenteditable="false" draggable="true"><iframe src="https://www.youtube.com/embed/z0WN7oWAHus" frameborder="0" allowfullscreen="" class="fr-draggable" style="float: left; width: 792px; height: 495px;"><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span></iframe></span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><span style="font-size: 11pt;"><strong><span style="color: rgb(226, 80, 65);">Important: </span></strong></span><span style="color: rgb(226, 80, 65);"><strong>An Administrator must connect to the single account below. Meeting invites will be sent from the connected account's email address. The azure account used when authorising the application from inside Halo needs to have delegate or "Full Access Permission" to each of the accounts (Mailbox Folder Permission) that you are connecting to for editing/adding appointments. </strong></span></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Azure App Registration</span></strong></p><p style="margin-left: 20px;">Firstly, you will need to set up an App Registration in Microsoft Azure. This can be done by navigating to the App Registrations tab of Azure and selecting new registration. The only thing you will need to set up here is the access type (single tenant) and name, redirect URI is necessary. Once this registration is complete you should keep this window open as you will need to refer back to the App registration when setting up your Calendar Integration.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">To create a new app registration, head to <a href="https://portal.azure.com/" rel="noreferrer" style="box-sizing: inherit; color: rgb(15, 97, 161); background-color: rgb(255, 255, 255); touch-action: manipulation; text-decoration: underline; cursor: pointer; font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal;" target="_blank">https://portal.azure.com</a> then click into the Microsoft Entra area.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhZmE2NTEzLWZlZmQtNDc3Yy1iNDFkLTZiYTRmMzBmM2NmYyJ9.vFnXdl5Z55xFcl189vYWoQKnJKrMSvHU9xlGa-PlXL0" width="350" height="352" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 12. Microsoft Entra area</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Then create a new registration.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjlhNTU1NDg0LTNlYzctNDFjNi05MWYyLWM5OTU0NTAyZGMzOCJ9.ZgwTY97ALRo0pzREd8WTw9qW1uL5zwxbpbaH7snFOqc" width="990" style="width: 990px; height: 581.226px;" height="581.226" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 13. Create a new app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Give the app a name and set the support account type to be 'Accounts in this organizational directory only (Single tenant). </p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;">The redirect URI should have the platform set to be 'Web', but the URI used will differ depending on the version of Halo you are using. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">On versions prior to v2.200 the following redirect URI will need to be used:</p><p style="margin-left: 20px;"><a data-fr-linked="true" href="https://YOURHALODOMAIN/azure/auth">https://YOURHALODOMAIN/azure/auth</a></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">On versions v2.200+ you the following redirect URI will need to be used:</p><p style="margin-left: 20px;"><a data-fr-linked="true" href="https://YOURHALODOMAIN/authcallback">https://YOURHALODOMAIN/authcallback</a></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">But the exact redirect URI you need can be found on the setup page for the integration in Halo.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZhZmJiOWE5LTk1OGYtNDk4YS04OGNmLTM0N2JiNDZlYzc0NyJ9.BPG4Mtix5a1_Yqfv_ZU68GxujDly1hUbSWaxXFTiUjc" width="985" height="640" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 14. New app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><em>Note: If you have disconnected to the integration and are reconnecting, if your Halo instance is on v2.200+ you will need to use the new redirect URI (https://YOURHALODOMAIN/authcallback).</em></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Register the application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now that an application has been registered, you must give it the relevant permissions required by the integration. In your new application, go to the API Permissions tab to get started. You should see your list of current permissions will be listed, along with options to manage these. Select the option to add a new permission, and choose Microsoft Graph from the available APIs.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 40px;"><strong>API Permissions needed: </strong></p><p style="margin-left: 40px;"><strong>Remove user.read </strong></p><p style="margin-left: 40px;"><br></p><p id="isPasted" style="margin-left: 40px;"><strong>Add User.Read.All</strong></p><p style="margin-left: 40px;"><strong>Add Calendars.ReadWrite</strong></p><p style="margin-left: 40px;"><strong>Add Calendars.ReadWrite.Shared</strong></p><p style="margin-left: 40px;"><strong>Add offline_access</strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once all permissions have been chosen, click the "Add Permissions" button to incorporate them into your application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once the permissions are added you will need to grant admin consent to all the permissions. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now you will need to generate a secret for the application. Navigate to the "Certificates & Secrets" tab of your App Registration in Azure. Add a new secret, providing a desired name and setting the expiration date. Save the changes. Take note of the secret value, as this will be used in Halo to access your App Registration. Store the secret value securely, as Azure only provides it once</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjFhZTE2MTc2LTljN2UtNDhjNC05Y2NhLTU4NGU1MTM3NWFkNyJ9.jrhb0hDJ6wtXEN88QXX2TE7zOfIum7nZTayoQ3fjkTg" class="fr-fic fr-fil fr-dib" width="1083" height="331"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 15. Generate new secret</span></strong></p><p style="margin-left: 20px;"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjAzMTdiYmViLTZjYzMtNGUyNy05ODk0LTRiY2IyNTY1NmE0NSJ9.Bf_fjmg7IoG_aFhegU_hcEWu8FeXVdkF1eeXSesJfpE" width="895" height="178" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; max-width: calc(100% - 10px); min-width: 10px; color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 897px; height: 178.183px;" id="isPasted" class="fr-fic fr-fil fr-dib"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 16. New secret</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now copy the Application (Client) ID, Tenant ID too.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><span style="color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA5MTgwZjUzLTc5YzgtNGE3My05YjA2LTJkOTk1NjE3MmI0NSJ9.LcYxH67yzEaFG_QjhkhRdCO-1W8a-1dxS1PTkF8ys84" width="894" style="width: 896px; height: 232.36px;" class="fr-fic fr-dii" height="232"></span></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 17. Application and tenant ID</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Head back to Halo and paste these values into the corresponding fields on the Exchange calendars integration page. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA4NjJmMmU4LTczM2QtNDY5NS1hOTUxLWUwMmRjZjFmMGM0OSJ9.4hFXTgfcBd-NAMi6uWx1T308ORJlAIJvQrxQWbBQJhM" class="fr-fic fr-fil fr-dib" width="803" style="width: 805px; height: 664.373px;" height="664"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 18. Azure application details in Halo</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Then click *Authorise Application*. <em><strong>Note: This will only show if using the "Connect to a single account" connection type.</strong></em></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><em>Note: If you receive redirect URI errors, make sure the redirect is set up correctly i.e. choose "Web" from the platform dropdown and use the following convention for the uri: https://*yourhaloinstance.com*/azure/auth</em></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span style="font-size: 12pt;">Grant Access</span></strong></p><p style="margin-left: 20px;">Head to the 'Syncing Appointments to Exchange' tab in the integration configuration page in Halo. If the access is to be for all agents calendars, click on the "Enable for All Agents" button.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyMzBhODY4LTIwZjYtNDlkMS1hZWU1LTU4NjkxY2YyMWQ1NSJ9.FOvcgK8MvsEb3kMgM8hY97qtEctG0RwxcRDxoduBir4" class="fr-fic fr-fil fr-dib" width="939" style="width: 941px; height: 334.055px;" height="334"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 19. Enable calendar syncing for agents</span></strong></p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Give mailbox permissions to another Microsoft 365 user:</span></strong></p><p style="margin-left: 20px;">If using this connection type you may need to grant the account you are connecting with delegated permissions to access each agent's mailbox (depending on your company requirements). This will grant the account full access to your calendar. A guide on how to do this can be found at the following link:</p><p style="margin-left: 20px;"><span style="color: rgb(0, 0, 0);"><a href="https://docs.microsoft.com/en-us/microsoft-365/admin/add-users/give-mailbox-permissions-to-another-user?view=o365-worldwide">https://docs.microsoft.com/en-us/microsoft-365/admin/add-users/give-mailbox-permissions-to-another-user?view=o365-worldwide</a> </span></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><strong><span style="font-size: 12pt;">Option 3: Each Technician Connects to Their Exchange Account Individually</span></strong></p><p id="isPasted" style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Azure App Registration</span></strong></p><p style="margin-left: 20px;">Firstly, you will need to set up an App Registration in Microsoft Azure. This can be done by navigating to the App Registrations tab of Azure and selecting new registration. The only thing you will need to set up here is the access type (single tenant) and name, redirect URI is necessary. Once this registration is complete you should keep this window open as you will need to refer back to the App registration when setting up your Calendar Integration.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">To create a new app registration, head to <a href="https://portal.azure.com/" rel="noreferrer" style="box-sizing: inherit; color: rgb(15, 97, 161); background-color: rgb(255, 255, 255); touch-action: manipulation; text-decoration: underline; cursor: pointer; font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal;" target="_blank">https://portal.azure.com</a> then click into the Microsoft Entra area.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZhZmE2NTEzLWZlZmQtNDc3Yy1iNDFkLTZiYTRmMzBmM2NmYyJ9.vFnXdl5Z55xFcl189vYWoQKnJKrMSvHU9xlGa-PlXL0" width="350" height="352" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 20. Microsoft Entra area</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Then create a new registration.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjlhNTU1NDg0LTNlYzctNDFjNi05MWYyLWM5OTU0NTAyZGMzOCJ9.ZgwTY97ALRo0pzREd8WTw9qW1uL5zwxbpbaH7snFOqc" width="990" style="width: 990px; height: 581.226px;" height="581.226" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 21. Create a new app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Give the app a name and set the support account type to be 'Accounts in this organizational directory only (Single tenant). </p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;">The redirect URI should have the platform set to "Web". The redirect URI used will differ depending on the version of Halo you are using. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">On versions prior to v2.200 the following redirect URI will need to be used:</p><p style="margin-left: 20px;"><a data-fr-linked="true" href="https://YOURHALODOMAIN/azure/auth">https://YOURHALODOMAIN/azure/auth</a></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">On versions v2.200+ you the following redirect URI will need to be used:</p><p style="margin-left: 20px;"><a data-fr-linked="true" href="https://YOURHALODOMAIN/authcallback">https://YOURHALODOMAIN/authcallback</a></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">But the exact redirect URI you need can be found on the setup page for the integration in Halo.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZhZmJiOWE5LTk1OGYtNDk4YS04OGNmLTM0N2JiNDZlYzc0NyJ9.BPG4Mtix5a1_Yqfv_ZU68GxujDly1hUbSWaxXFTiUjc" width="985" height="640" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 22. New app registration </span></strong></p><p style="margin-left: 20px;"><br></p><p id="isPasted" style="margin-left: 20px;"><strong><em>Note: If you have disconnected to the integration and are reconnecting, if your Halo instance is on v2.200+ you will need to use the new redirect URI (<a data-fr-linked="true" href="https://YOURHALODOMAIN/authcallback">https://YOURHALODOMAIN/authcallback</a>).</em></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Register the application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now that an application has been registered, you must give it the relevant permissions required by the integration. In your new application, go to the API Permissions tab to get started. You should see your list of current permissions will be listed, along with options to manage these. Select the option to add a new permission, and choose Microsoft Graph from the available APIs.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 40px;"><strong>API Permissions needed: </strong></p><p style="margin-left: 40px;"><strong>Remove user.read </strong></p><p style="margin-left: 40px;"><strong><br></strong></p><p style="margin-left: 40px;"><strong>Add Calendars.ReadWrite</strong></p><p id="isPasted" style="margin-left: 40px;"><strong>Add User.Read.All</strong></p><p style="margin-left: 40px;"><strong>Add Calendars.ReadWrite.Shared</strong></p><p style="margin-left: 40px;"><strong>Add offline_access</strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once all permissions have been chosen, click the "Add Permissions" button to incorporate them into your application.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Once the permissions are added you will need to grant admin consent to all the permissions. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now you will need to generate a secret for the application. Navigate to the "Certificates & Secrets" tab of your App Registration in Azure. Add a new secret, providing a desired name and setting the expiration date. Save the changes. Take note of the secret value, as this will be used in Halo to access your App Registration. Store the secret value securely, as Azure only provides it once</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjFhZTE2MTc2LTljN2UtNDhjNC05Y2NhLTU4NGU1MTM3NWFkNyJ9.jrhb0hDJ6wtXEN88QXX2TE7zOfIum7nZTayoQ3fjkTg" class="fr-fic fr-fil fr-dib" width="1083" height="331"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 23. Generate new secret</span></strong></p><p style="margin-left: 20px;"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjAzMTdiYmViLTZjYzMtNGUyNy05ODk0LTRiY2IyNTY1NmE0NSJ9.Bf_fjmg7IoG_aFhegU_hcEWu8FeXVdkF1eeXSesJfpE" width="895" height="178" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; max-width: calc(100% - 10px); min-width: 10px; color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 897px; height: 178.183px;" id="isPasted" class="fr-fic fr-fil fr-dib"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 24. New secret</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Now copy the Application (Client) ID, Tenant ID too.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><span style="color: rgb(0, 0, 0); font-family: Poppins, sans-serif, Roboto; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: pre; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA5MTgwZjUzLTc5YzgtNGE3My05YjA2LTJkOTk1NjE3MmI0NSJ9.LcYxH67yzEaFG_QjhkhRdCO-1W8a-1dxS1PTkF8ys84" width="894" style="width: 896px; height: 232.36px;" class="fr-fic fr-dii" height="232"></span></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 25. Application and tenant ID</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Head back to Halo and paste these values into the corresponding fields on the Exchange calendars integration page. </p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjA4NjJmMmU4LTczM2QtNDY5NS1hOTUxLWUwMmRjZjFmMGM0OSJ9.4hFXTgfcBd-NAMi6uWx1T308ORJlAIJvQrxQWbBQJhM" class="fr-fic fr-fil fr-dib" width="803" style="width: 805px; height: 664.373px;" height="664"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 26. Azure application details in Halo</span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Then click *Authorise Application* </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><em>Note: If you receive redirect URI errors, make sure the redirect is set up correctly i.e. choose "Web" from the platform dropdown and use the following convention for the uri: https://*yourhaloinstance.com*/azure/auth</em></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Enable appointment syncing</span></strong></p><p style="margin-left: 20px;">Now you have connected head to the 'Syncing Appointments to Exchange' tab and use the button 'Enable for all Agents' to enable the option of calendar syncing for everyone. </p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><strong><span style="font-size: 11pt;">Connect Agent accounts</span></strong></p><p style="margin-left: 20px;">When using this method, you will now need to ask your agents to navigate to the Calendar module and scroll down to find the "Exchange Calendar" section where you can connect or disconnect your account. If this does not show up immediately, you will need to clear your cache and log out and back in.</p><p style="margin-left: 20px;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Ijc4NDJkZWZiLTJiOTktNGQwZS04YzdmLWQzNTI3ODg4NTI5OSJ9.-xASiBLNeHSD6PCGY-yX28HMYUvSo0Fj77nna6tbkyc" width="316" height="601" class="fr-fic fr-dii"></p><p style="margin-left: 20px;"><strong><span style="font-size: 10pt;">Fig 27. Sign in to exchange accounts </span></strong></p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;">Each agent will need to sign in to their Exchange account to connect.</p><p style="margin-left: 20px;"><br></p><p style="margin-left: 20px;"><br></p><p><br></p><p id="isPasted"><strong><span style="font-size: 14pt;">Immutable IDs and Webhooks</span></strong></p><p><span style="font-size: 11pt;">Prerequisites:</span></p><ul><li style="font-size: 11pt; font-style: italic;"><em>Connection Method 'Use Azure application with application permissions'</em></li></ul><p>When using the connection type 'Use Azure application with application permissions' you will have the option to use Immutable IDs. This prevents issues caused by the ID of an Exchange appointment changing when certain properties on the appointment are changed.</p><p><br></p><p id="isPasted">Additional permissions must be granted to your Azure application to use this functionality. The following permission is needed:</p><ul><li style="font-weight: bold;"><strong> User.Read.All permission (type: application)</strong></li></ul><p>Immutable IDs can be enabled by selecting the 'Use Immutable IDs' button at the bottom of the Exchange Calendars integration page.<em><strong> Note: Enabling this is irreversible and you will not be able change your connection method/type following this.</strong></em></p><p><br></p><p>Whilst enabling is irreversible, it does bring some benefits.</p><p><br></p><ul><li><strong>Stability</strong>: Applications and integrations have a reliable way to identify and track objects without being disrupted by changes to object properties.</li><li><strong>Consistency</strong>: Systems that sync or interact with Exchange data can ensure they're referencing the same object, even if other aspects of the object are updated.</li><li><strong>Reduced Errors</strong>: Prevents issues caused by ID mismatches in integrations, such as calendar sync tools, that need a consistent reference point.</li><li><strong>Efficiency</strong>: When you enable Immutable IDs, you can then enable webhooks for this integration. This will make the sync between Halo and Exchange instant, rather than taking up to 60 minutes for appointment creations/updates/deletions from Exchange to come into Halo.</li></ul><p><em><strong> </strong></em></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjZjZTIzMTY0LTQzMDEtNDU0Yy1hM2RhLTZkOGVjYzdiOTMxYSJ9.BBD8T7DFxEKvACAgixjnRCtKYQK1zmNa568dsGD1piU" class="fr-fic fr-fil fr-dib" width="579" style="width: 581px; height: 175.282px;" height="175"></p><p><strong><span style="font-size: 10pt;">Fig 28. Enable Immutable IDs</span></strong></p><p><br></p><p><strong><span style="font-size: 12pt;">Webhooks</span></strong></p><p>Webhooks can be configured to receive instant updates for Created, Updated, and Deleted events from Exchange. Webhooks will also sync any appointment changes from Halo to Exchange. </p><p><br></p><p id="isPasted">Immutable IDs must be enabled to use the webhook functionality. Once enabled a 'webhooks' section will be available under the exchange calendar configuration page.</p><p id="isPasted"><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY0NmZjZjJmLWVjMGUtNDlhNS1iNDc2LTYwODNlOGQ4ZmI2NCJ9.Ug-Ws2EJiiXh_L8v4JrOZcdpICNEZ-v175hohAdOQ6w" class="fr-fic fr-fil fr-dib" width="920" style="width: 922px; height: 366.035px;" height="366"></p><p><strong><span style="font-size: 10pt;">Fig 29. Webhook functionality</span></strong></p><p><br></p><p>As shown on the setup screen in figure 29, subscriptions for an agent will be created/deleted automatically when toggling the integration on/off in their preferences. Any active subscriptions will be renewed either when a webhook is received for an event for that agent, or daily via the task scheduler.</p><p><br></p><p>You can manually manage the subscription for each agent in the table provided. The add button also contains an "All" option to create a subscription for all outstanding agents.</p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjQ5Mzg3YjM3LTA5MmItNGQ0Yy04YzQ0LTE3NjAyNjFjNmJiZCJ9.cp-LPbUarSP2phvHUjSBYgm65kNitkIoQF3za0yMWCw" width="434" height="143.608" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; width: 434px; height: 143.608px; max-width: none !important;" id="isPasted" class="fr-fil fr-dib"></p><p><strong><span style="font-size: 10pt;">Fig 30. Create subscription</span></strong></p><p><br></p><p data-pasted="true">From v2.220+ the way in which webhooks from Exchange are processed will change to provide better performance and greater reliability when handling higher-volume periods. There are no additional configuration changes required for this work. From v2.220+ incoming webhooks from Exchange will be saved initially and then be processed by the incoming webhook service The incoming webhook service is run by the task scheduler, and is enabled during the upgrade. Therefore webhooks will be processed sequentially each time the task scheduler runs. </p><p><br></p><p><strong><span style="font-size: 14pt;">Importing Appointments from Exchange</span></strong></p><p>Now you have connected to Exchange you can import your existing appointments from Exchange into Halo. </p><p><br></p><p>Head to the 'Importing appointments from Exchange' tab and use the button 'Import appointments' to bring up the import preview screen. Hit 'Start' to begin the import. </p><p><br></p><p>To import recurring appointments follow the same process using the 'Import recurring appointments' button. </p><p><br></p><p>From v2.238+, you can specify a default Appointment Type for imported appointments using the "Default Appointment Type" dropdown. </p><p><br></p><p data-pasted="true">As of v2.232+, Appointments imported from exchange will show as the same type for all the additional Agents. Prior to this the appointment type is imported as a standard appointment.</p><p><br></p><p><strong><span style="font-size: 12pt;">Set appointments to import automatically</span></strong></p><p>Now you have your existing appointments imported you will need to ensure your appointments are imported into Halo automatically when created in Exchange. </p><p><br></p><p>If you are using the connection method 'Use an Azure application with application permissions' you can either use the Halo integrator or webhooks to import appointments when created in exchange. When using webhooks appointments will be imported almost instantly after being created in Exchange (see the section immutable IDs and webhooks for information on this). We recommend enabling both webhooks and the integrator as the webhooks will import appointments right away but the integrator will run as a failsafe. </p><p><br></p><p>If you are using the connection methods 'Connect to a single account which has delegate access to each Agent's calendar' or 'Each technician connects to their account individually' you will need to use the Halo integrator to import appointments. </p><p><br></p><p>To enable the Halo integrator for Exchange calendars check the box highlighted in figure x. You will also need to set which appointments you would like to be imported. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY5YWEyMmZiLTc2MDEtNDk3Ny1hM2NlLWQ4MDQyMjUxYWRlYyJ9.080VhfvN2pUvCkEPBJwJgBjzqvbXUr45iQcOs4xpW2A" class="fr-fic fr-fil fr-dib" style="width: 848px; height: 428.641px;" width="1003" height="508"></p><p><strong><span style="font-size: 10pt;">Fig 31. Enable the Halo integrator</span></strong></p><p><br></p><p>When usin<span style="color: rgb(0, 0, 0);">g the Halo integrator appointments will be imported on a hourly schedule (the integrator will run and import appointments every 60 minutes), this is the most frequently we can run the Halo integrator for this application. If you would like appointments to be synced more frequently you could run your own integrator in addition to the hosted one. </span>See the section 'Hosting your own Halo integrator' in our guide <a data-fr-linked="true" href="https://usehalo.com/haloitsm/guides/1062/" id="isPasted" target="_blank" rel="noopener noreferrer">here</a> for more information on this.</p><p><br></p><p><strong><span style="font-size: 14pt;">Inbound and Outbound Requests Tab </span></strong></p><p>Under these tabs you can see the inbound an outbound requests for webhooks used to update appointments. Any requests that have been received from Exchange will appear in the inbound requests tab. Any requests sent from Halo to exchange will appear in the Outbound requests tab.</p><p><br></p><p><strong><em>Note: You will only see logs in here if you are using the webhooks functionality. </em></strong></p><p><br></p><p>This is useful to monitor/identify any issues with syncing. </p><p><br></p><p><strong><span style="font-size: 14pt;">Using Exchange Calendars</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" id="isPasted"><strong><span style="font-size: 12pt;">Meeting Invites</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">Once connected you can send Teams Meeting invites from Halo by checking the setting shown in figure x on any Appointment Types that this applies to. </p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjNkOGMxYjRmLWI4ODctNDdmMi05ZDNiLWE4OGMzZjE0Njg3MCJ9.BJEFBvWud6mVGWZU3lpR-aeHz4Nhaopzlul1OKlvDuE" width="694" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; width: 696px; max-width: none !important; height: 436.69px;" class="fr-fil fr-dib" height="437"></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><span style="font-size: 10pt;">Fig 32. Set an appointment type to create a MS teams meeting</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><span style="font-size: 12pt;">Setting Appointments to be Private</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">When syncing appointments to Halo, you can set appointments to be private from within Configuration > Calendars and Appointments > General Settings.</p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjE5NGY2YzMwLTk1YTQtNGQwYy04YzlkLTlkZmVjMzFiNWEwMSJ9.TfGmS6by3DOwYZff6WbHEZFI-OTa37agFOsXRCH6nGw" width="901" height="94" style="box-sizing: inherit; border-style: none; cursor: pointer; padding: 0px 1px; user-select: none; text-align: left; max-width: none !important;" class="fr-fil fr-dib"></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><span style="font-size: 10pt;">Fig 33. Setting to make every appointment imported to be private</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">This is used when you would like agents in Halo to be able to see each other's calendar availability but do not want them to be able to see the details/summary of their appointments. </p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">If a private appointment is imported from Exchange the subject and body of the appointment will not be imported, only the start and end date/times. When changes are made to this appointment only start/end dates/times will be updated. </p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p id="isPasted"><strong><span style="font-size: 12pt;">Syncing Appointment Locations</span></strong></p><p>To have the appointment location sync over to the appointment in exchange, first ensure you have the appointment location field enabled. This can be enabled under configuration > Calendars and Appointments > General settings. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI4ZWI1ZTQxLTI1ODgtNDRjMS05ZTZkLTMzZDBhMTM0YTMwOCJ9.0ZN22e9SZapuhiXlL4GtMstN8kViGeGrAWr9N5TOZYw" width="471" style="width: 473px; height: 213.197px;" height="213" class="fr-fic fr-dii"></p><p><strong><span style="font-size: 10pt;">Fig 34. Enable appointment location field</span></strong></p><p><br></p><p>Once enabled, when raising an appointment in Halo you will be prompted to choose/enter a location for the appointment. This location will also be visible against the appointment in exchange. </p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><br></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><span style="font-size: 12pt;">Exchange Calendars and Multi-Tenancy</span></strong></p><p style="box-sizing: inherit; margin: 0px; line-height: 1.4285em; color: rgb(0, 0, 0); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">The Exchange calendars integration is single tenanted at present so it does not have the functionality to sync appointments from multiple azure tenants.</p><p><br></p><p><strong id="isPasted"><span style="font-size: 14pt;">Common Errors</span></strong></p><table class="grid" style="margin-right: calc(0%); width: 100%;" width="601"><tbody><tr><td class="fr-thick" style="width: 17%; background-color: rgb(84, 172, 210);"><p><strong>Description</strong></p></td><td class="fr-thick" style="width: 29%; background-color: rgb(84, 172, 210);"><p><strong>Cause</strong></p></td><td class="fr-thick" style="width: 53%; background-color: rgb(84, 172, 210);"><p><strong>Resolution</strong></p></td></tr><tr><td class="fr-thick" style="width: 17%;"><p>When testing which calendars the connected account has access too, an error is given saying "The specified object was not found in the store"</p></td><td class="fr-thick" style="width: 19%;"><p>Either the connected account does not have the required level of access to the user’s calendar, or they have only just been granted the correct level of access. Sometimes granting delegate permissions can take up to an hour to take effect.</p></td><td class="fr-thick" style="width: 63%;"><p>Ensure the connected account has delegate access to read/edit the user’s calendar. There are multiple ways of doing this, but <a href="https://www.clouddirect.net/knowledge-base/KB0011012/delegating-someone-else-to-manage-your-mail-and-calendar">here </a>is a short guide we've used before.</p></td></tr></tbody></table><p><br></p><p id="isPasted"><strong><span style="font-size: 12pt;">Adding Additional Agents to an Appointment</span></strong></p><p>When the Exchange integration is enabled, additional agents assigned to a ticket will have their email auto-populated in the "Other Attendees" field alongside the main assigned agent when creating an appointment from that ticket.</p><p><br style="box-sizing: inherit;"></p><p>For instance here, Leah is the assigned agent, and Amir is the additional agent, and both have populated here.</p><p><br style="box-sizing: inherit;"></p><p><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImM4MjE2ODc2LTA3MmItNDMyYi1hOWRkLWY2ZGM2NWMyMzg4YyJ9.F3ntRjLYtlXD2A_cDQl7hl4UaQjeLztjs3ieGvIhy5o" width="525" height="440" style="box-sizing: inherit; border-style: none; text-align: left;" class="fr-fil fr-dib"></p><p><strong><span style="font-size: 10pt;">Fig 35. Additional agent invite.</span></strong></p>