Can Lightning calendars be created with thunderbird.cfg? - thunderbird

We have set up a calDav server and are planning deployment within our enterprise but are having trouble creating the calDav calendars in Thunderbird with Thunderbird.cfg, default.js, all.js or user.js. Is there a method of automating the creation of these Calendars in thunderbird or do we have to create an add-on to do this?
Any help would be appreciated.

Lightning calendars can be created using standard preferences and then injected using the mechanisms you described (Thunderbird.cfg, default.js, all.js, user.js, ...). These are the mandatory prefs:
calendar.registry.{uuid}.type = "caldav"
calendar.registry.{uuid}.uri = "https://path/to/calendar/"
calendar.registry.{uuid}.name = "My Calendar"
And these are optional:
calendar.registry.{uuid}.cache.enabled = true
calendar.registry.{uuid}.color = "#330099"
// id1 must be the key as in prefs.js for the email identity.
calendar.registry.{uuid}.imip.identity.key = "id1"
calendar.registry.{uuid}.readOnly = true
calendar.registry.{uuid}.refreshInterval = 30 // minutes
// visible, i.e checked in the calendar list
calendar.registry.{uuid}.calendar-main-in-composite = true

Related

SubscriptionSchedulerCmd not running without a registered userId - HCL Commerce / IBM WCS

I am implementing the OOB Recurring Order feature in our store.
I am setting up the SubscriptionSchedulerCmd as explained in this wiki https://help.hcltechsw.com/commerce/9.0.0/admin/tasks/tin_settingupscheduler.html?hl=setting%2Cup%2Cscheduler%2Cprocess%2Csubscriptions%2Crecurring%2Corders
But the scheduler is not running as expected. I see the following error from the logs
CommerceSrvr A AccManager performForUserAuthorizationCheck(AccCommand) The run-as-identity must be of registered type.
ExtendedInfo I CWXFR9010I: Extended information : [context=com.ibm.commerce.context.base.BaseContext : [bInitialize = false][bRecalibrate = true][inCallerId = -1000][inRunAsId = 291003][inStoreId = 10151][istrChannelId = null][bDirty = true][bRequestStarted = true][iOriginalSerializedString = 0&-1000&-1000&null][iToken = 21450482:true:true:0]] [queryString=] [schedulerName=SubscriptionSchedulerCmd]
But it runs fine for the recurring orders of one particular user if I give that userIdin the associated user field in the schduler configurator. What am I missing here ?
SubscriptionSchedulerCmd only runs for USERS of REGISTERTYPE = "R". So if a USER is both R and S the precedence is for S for the command will not run and will not create child orders.

Export Standard/Extended User Greetings (Exchange 2016) - For Use In XMedius AVST

In an earlier post on June 18, 2018 (my birthday BTW), a user asked "Hopefully a simple question - at one time I know when user's recorded their personal greetings for UM voicemail in o365 (regular greeting and/or extended absence greeting) these were stored in their Exchange inbox using a special item type (i.e. "IPM.Configuration.Um.CustomGreetings.External"). However setting up my test o365 setup, getting UM configured and all that, after recording my personal greeting and going through each item starting from the root of my inbox, (some 900+ items - lots of odd stuff in there) - I don't see anything like this any more. Lots of log, activity items, some messages but nothing about greetings. Extracting everything that could cast to an email type to a folder I went through each one - nothing promising. anyone have any clues where the custom greetings for users UM (not auto attendant recordings - that's a different beast) has gone off to and how to get to it?" After reading through the answers as well as the code that was provided by Jeff Lindborg, I thought that I was getting somewhere. With a lot of trial and error, I was finally able to get the EWS-FAI module installed as well as the Exchange Web Services API. Unfortunately, when it came to running the provided code, this is where I am stumped. I'm not a developer or 'coder' in any form, but I'm always looking for effective and efficient methods to do my work. With that said, I'm trying to run this on a Win10 workstation, but can't seem to figure out which program this needs to run within. I've tried Powershell, but that doesn't work. I have access to the necessary accounts for mailbox impersonation as well as any other permissions needed. I've provided the code that was originally supplied for review. Any additional help would be greatly appreciated.
Code
ExchangeService _service;
_service = new ExchangeService(ExchangeVersion.Exchange2016); // Exchange2013_SP1);
_service.Credentials = new WebCredentials("user#domain", "myPw");
_service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
//select the user you're fetching greetings for
_service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "user#domain");
//get the root folder for the current account
var oParamList = new List<FolderId> {WellKnownFolderName.Root};
var oTemp = _service.BindToFolders(oParamList, PropertySet.FirstClassProperties);
var oRoot = oTemp.First().Folder;
var oView = new ItemView(50)
{
PropertySet = new PropertySet(BasePropertySet.FirstClassProperties),
Traversal = ItemTraversal.Associated
};
SearchFilter oGreetingFilter = new SearchFilter.ContainsSubstring(ItemSchema.ItemClass,
"IPM.Configuration.Um.CustomGreetings", ContainmentMode.Substring, ComparisonMode.IgnoreCase);
var oResults = _service.FindItems(oRoot.Id, oGreetingFilter, oView);
//fetch the binary for the greetings as values
var oPropSet = new PropertySet(BasePropertySet.FirstClassProperties);
var oRoamingBinary = new ExtendedPropertyDefinition(31753, MapiPropertyType.Binary);
oPropSet.Add(oRoamingBinary);
_service.LoadPropertiesForItems(oResults, oPropSet);
var strFileName = "";
foreach (var oItem in oResults.Items)
{
if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.External",
StringComparison.InvariantCultureIgnoreCase))
strFileName = "jlindborg_Standard.wav";
if (oItem.ItemClass.Equals("IPM.Configuration.Um.CustomGreetings.Oof",
StringComparison.InvariantCultureIgnoreCase))
strFileName = "jlindborg_Extended.wav";
File.WriteAllBytes("d:\\" + strFileName, (byte[]) oItem.ExtendedProperties.First().Value);
}
}
The code you posted is c# so you would need to use Visual Studio to create a C# application add a reference to the EWS Managed API and compile that for it to work (you'll need to engage a developer or learn some basic coding).
EWS-FAI is a powershell module it should be able to return that item and you should be able to write that to a file eg something like
$MailboxName = "mailbox#domain.com"
$Item = Get-FAIItem -MailboxName $MailboxName -ConfigItemName Um.CustomGreetings.External -Folder Inbox -ReturnConfigObject
[System.IO.File]::WriteAllBytes(("C:\temp\" + $MailboxName + ".wav"),$Item.BinaryData)

Generate new email from a custom outlook form

I have built a form that stores certain contact data on it. I want to include a couple of buttons/functions to keep the user in the form as much as possible versus switching between Outlook components (calendar, mail, etc.).
In this case the user can swap email addresses from separate ListBoxes and when they hit the button it will use the emails within one of them. Using VBS because I'm dealing with custom Outlook forms.
Sub GenerateButton_Click()
'Generates Email with all of the CCs
'Variables
Set FormPage = Item.GetInspector.ModifiedFormPages("Commands")
Set DoSend = FormPage.Controls("DoSendListBox")
mailList = ""
'Generate Email List
For x = 0 to (DoSend.ListCount - 1)
mailList = mailList & DoSend.List(x) & ";"
Next
'Compose Email
Set msg = Application.CreateItem(olMailItem)
msg.Subject = "Hello World!"
msg.To = mailList
End Sub
What Happens
- it compiles
- nothing happens on click
Research
- online forums usually in VBA
- relevant articles use outside connection rather than from within outlook
SOLVED
Note: Click on the "script" option and select the object item. From the new window you can navigate through the classes and from this I was able to find MailItem. You can see all of the methods/properties on the right hand pane.
It Turns out the correct syntax was:
Set msg = Application.CreateItem(MailItem)
msg.Display

SharePoint Online PowerShell Custom Group in Site Settings

I know how to use PowerShell to create a new SharePoint Site Settings link, but I cannot seem to find how to create a custom group within site settings.
Here is the code for creating the Custom Action:
$siteSettingLink = $Context.Web.UserCustomActions.Add();
$siteSettingLink.Group = "SiteTasks";
$siteSettingLink.Location = "Microsoft.SharePoint.SiteSettings";
$siteSettingLink.Name = "Sample_CustomSiteSetting";
$siteSettingLink.Sequence = 1000;
$siteSettingLink.Url = '/Pages/CustomPageContent.aspx';
$siteSettingLink.Title = "Custom Site Settings Link";
$siteSettingLink.Update();
$Context.ExecuteQuery();
Then the '.Group' property would reflect my custom group ID. I just cannot seem to figure out how to create the custom group using CSOM and PowerShell.
Here is the code to do it if you deploy the XML:
<CustomActionGroup Id="CannonFodderUtilities"
Location="Microsoft.SharePoint.Administration.Applications"
Title="Utitilies"
Sequence="80"
ImageUrl="/_layouts/15/images/CannonFodder/CannonFodderLogo.png"
xmlns="http://schemas.microsoft.com/sharepoint/" />
Sorry if this is a repost...I could not find anything through multiple searches.
Thanks in advance.

Is there a way to generate emails on Exchange with past sent/received dates

We have a component that grabs emails/meetings from Exchange (Online, 2013, 2010) and we'd like to create email distribution in the past timeframe e.g. 6 month for testing purposes.
In order to achieve this we definitely need emails that have received/Sent dates to be in the past, not started from current (from generation moment) time when we started email generation.
We looked at EWS API - it does not support changing of the dates for created (generated) emails.
What other options exists?
You can create an Email with EWS that looks like it was received in the past if you change the Extended properties on the message eg
EmailMessage OldMessage = new EmailMessage(service);
OldMessage.ToRecipients.Add("user#domain.com");
OldMessage.Sender= new EmailAddress("bob#domain.com");
OldMessage.From = new EmailAddress("bob#domain.com");
OldMessage.Subject = "This is an old message";
OldMessage.Body = new MessageBody("test");
ExtendedPropertyDefinition PR_Flags = new ExtendedPropertyDefinition(3591,MapiPropertyType.Integer);
OldMessage.SetExtendedProperty(PR_Flags,1);
ExtendedPropertyDefinition PR_CLIENT_SUBMIT_TIME = new ExtendedPropertyDefinition(0x0039,MapiPropertyType.SystemTime);
ExtendedPropertyDefinition PR_MESSAGE_DELIVERY_TIME = new ExtendedPropertyDefinition(0x0E06,MapiPropertyType.SystemTime);
OldMessage.SetExtendedProperty(PR_CLIENT_SUBMIT_TIME,DateTime.Now.AddMonths(-6));
OldMessage.SetExtendedProperty(PR_MESSAGE_DELIVERY_TIME,DateTime.Now.AddMonths(-6));
OldMessage.Save(WellKnownFolderName.Inbox);
You can also just import a message using the MimeContent that would do the same thing eg https://msdn.microsoft.com/en-us/library/office/dn672319(v=exchg.150).aspx
Cheers
Glen