If I create a label in Dynamics AX 2012, exactly creating it in D365 isn't straight forward/simple.
I quickly wrote this simple job to export a label to a format that can be easily imported into Dynamics 365. I simply looked at how D365 label text is stored and inferred this, so I haven't done extensive testing, but it seems to work fine for several hundred labels when comparing via WinMerge what my job outputs vs what D365 contains.
static void AlexOnDaxExportLabelToD365(Args _args) { #File str labelFileId = 'QUA'; str language = 'en-us'; Filename labelFilenameD365 = @'C:\Temp\AlexLabel.label.txt'; LabelId labelId; LabelString labelString; LabelDescription labelDescription; Set setLabelIds; SetEnumerator se; SysLabelFileReader labelFileReader; TextIo textIo; SysLabelFile labelFile = SysLabelFile::newLanguageModule(language, labelFileId); if (!Label::flush(labelFileId, language)) throw error(strFmt("Unable to flush label %1 in language %2", labelFileId, language)); new FileIOPermission(labelFilenameD365, 'W').assert(); // This just create the file if it doesn't exist textIo = new TextIo(labelFilenameD365, #IO_Write, #utf8Format); textIo.write(''); textIo = null; // We output the file somewhere if (labelFile.toFile(labelFilenameD365, true)) { labelFileReader = SysLabelFileReader::newFileClient(labelFilenameD365); if (labelFileReader) { setLabelIds = labelFileReader.labelIds(); } } if (!(setLabelIds && labelFileReader)) throw error("Unable to get label"); textIo = new TextIo(labelFilenameD365, #IO_Write, #utf8Format); se = setLabelIds.getEnumerator(); while (se.moveNext()) { labelId = se.current(); labelString = labelFileReader.labelText(labelId); labelDescription = labelFileReader.labelDescription(labelId); // There must be a value if (!labelString) labelString = ' '; if (labelDescription) textIo.write(labelId + '=' + labelString + '\n' + ' ;' + labelDescription); else textIo.write(labelId + '=' + labelString); } textIo.write(''); // Write ending CR textIo = null; CodeAccessPermission::revertAssert(); info(strFmt("Finished converting %1 to Dynamics 365 for Operations label file", labelFilenameD365)); }