Issues importing Data Package

In one of our environments we had an issue where we were not able to import a data package from a file. When trying the import it simply did not list the entities included in the package. So we tried the usual; restarting the DIXF service, Restarting the VM…. No luck.

Looking in the Event Viewer we found an error from the Microsoft Dynamics AX DIXF Service Runtime Provider:

Error In SSIS Execution

System.Exception: SYS105313 —> System.InvalidOperationException: The ‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local machine. at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper) at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at Microsoft.Dynamics.AX.Framework.Tools.DMF.DriverHelper.DMFOdbcDriver.GetSheetNamesFromExcel(String sourceFileURL) — End of inner exception stack trace — at Microsoft.Dynamics.AX.Framework.Tools.DMF.DriverHelper.DMFOdbcDriver.GetSheetNamesFromExcel(String sourceFileURL) at Microsoft.Dynamics.AX.Framework.Tools.DMF.SSISHelperService.Service.ServiceHelper.GetSheetNamesFromExcel(String sourceFile)

I used a bit of Google-Fu and found that this is probably an issue with the Access Database engine. Since all Dynamics 365 FO VMs are deployed as ready-made VMs and we are not responsible for any installation the alternative to fixing this issue is to just redeploying the VM. In this case I tried to fix it. I downloaded this install file from Microsoft and ran a repair.

This solved the issue and re-registered the DLLs needed.

Links:
https://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-mach

En Liten Podd om IT – Avsnitt 241 – Skaffa dig en egen dj***a podd

Om Shownotes ser konstiga ut så finns de på webben här också: https://www.enlitenpoddomit.se/e/en-liten-podd-om-it-avsnitt-241

Avsnitt 241 spelades in den 17:e November och eftersom en albatross har spårats att flyga runt jorden på endast 46 dagar handlar dagens avsnitt om:

FEEDBACK OCH BACKLOG

* David har haft en hemlig vecka, Johan har haft en arbetsvecka och Björn har haft förkylningsvecka. Mats är inte med den här veckan så han har en pågående “David&Johan”-vecka.

* Tävlingen för biljett till “Truesec Intfrasrtucture Summmit” på Vasateatern förlängs en vecka

* Tävlingen för “Kingston DT2000” minnet pågår en vecka till.

* Bloggpost om MS Ignite Random Session Generator

* BONUSLÄNK: Själva länken för att få random Ignite sesion

* Johan har en bloggpost om nedladdningsscript för Ignite

* Diskussion: Hur får man lösenorden att bli säkrare för privatpersoner (kopplat till inlägget i säkerhetsbubblan)

* BONUSLÄNK: hur Mat Honan blev hackad

* BONUSLÄNK: Dela filer med BankID som identifikation (Björne har pratat en del med Storegate som är ett svenskt alternativ till molnleverantörerna. De har denna lösning i en av sina produkter)

MICROSOFT

* New Outlook for Mac (16.32 (19111100)) – fast ring

* Microsoft Xcloud streaming tjänst har gått ut med att man kommer ha ett helt drös spel från början.

* BONUSLÄNK 1: Darknet diaries om Xbox Underground (del 1)

* BONUSLÄNK 2: Del 2

* BONUSLÄNK 3: Sony tjänar mindre pengar än AMD på varje PS4 enligt en rätt gammal artikel 

APPLE

* Phil Sciller (som jobbar på Apple) har förklarat att barn som har en Chrome books kommer att misslyckas här i världen #Smooth…

GOOGLE

* Google Stadia har gått ut med lite spel som kommer under 2019, det är inte jättemånga, och Björn är i alla fall inte speciellt imponerad…

* November 19

* Assassin’s Creed Odessy

* Destiny 2: the Collection

* GYLT

* Just Dance 2020

* Kine

* Mortal Kombat 11

* Red Dead Redemption II

* Thumper

* Tomb Raider: The definitive Edition, rise of the Tomb Rainder, Shadow of the Tomb Raider: Definitive Edition

* Samurai shodown

* Kommande i 2019

* Attack on Titan 2: Final Battle

* Borderlands 3

* Darksiders Genesis

* Dragon Ball Xenoverse 2

* Farming Simulator 19

* Final Fantasy XV

* Football Manager 2020

* Also Coming in 2019

* Ghost Recon Breakpoint

* GRID

* Metro Exodus

* NBA 2k20

* RAGE 2

* Trials Rising

* Wolfenstein: Youngblood

EN TILL MICROSOFT GREJ

* PowerToys v0.12 är nu släppt. (faktiskt är 0.13 släppt men det hade björn missat)

LYSSNARFRÅGA:

Magnus: “Söker lite hjälp. Jag är ute och letar efter ett program/webb eller liknande som möjliggör att man inte behöver vara administrör på datorn utan när behov uppstår kan man via denna funktion kan bli administratör under en kortare tid, behöver fungera internt och externt. Det vore önskvärt om man även kan ange en speciell dator/server via tex namnet och bli admin på den en viss tid. Har ni något bra förslag? Tack för en mycket bra podd.”

* Björn: Hos oss så kör vi: https://docs.microsoft.com/sv-se/microsoft-identity-manager/pam/privileged-identity-management-for-active-directory-domain-services

* Bra bloggpost om PAM: https://www.petri.com/windows-server-2016-set-privileged-access-management

* Local Administrator Password Solution (LAPS) https://www.microsoft.com/en-us/download/details.aspx?id=46899

* Bra bloggpost om LAPS: https://blog.stealthbits.com/running-laps-in-the-race-to-security/

SHUT UP AND TAKE MY MONEY:

Björn: Jag ska FAN vinna snöbollskrigen i vinter

David: Extraljus till bilen

Johan: Ryggsäck

EGNA LÄNKAR

En Liten Podd Om IT på webben

En Liten Podd Om IT på Facebook

En Liten Podd Om IT på Youtube

LÄNKAR TILL VART MAN HITTAR PODDEN FÖR ATT LYSSNA:

Apple Podcaster (iTunes)

Overcast

Acast

Spotify

Stitcher

LÄNK TILL DISCORD DÄR MAN HITTAR LIVE STREAM + CHATT

https://discord.gg/gfKnEGQ

source https://www.enlitenpoddomit.se/e/en-liten-podd-om-it-avsnitt-241/

Changing branches for a new sprint

In the project I am working on right now we are maintaining two release branches. One for sprint release and one for hotfixes. Every time we release a sprint we are re-targeting the the build pipelines to point to the new branches for the next sprint. This article is a short description for where you need to change path (mostly for me to remember):

  1. Log into Azure DevOps
  2. Go to Pipelines – Builds
  3. Select the Pipeline you want to change and click Edit
  4. Go to Get Sources and change the two fields under Server Path

  5. Select the workflow item called Build the solution and change to the correct path in Project

  6. Save the pipeline.

    Note that when you are looking at the pipeline you will not see the correct branch until you have actually run the build successfully once

That is it for today…

Johan

 

Setting up notifications in Azure DevOps

Today one of the test guys in our project asked if it was possible to get a notification when code was pushed to a specific branch in DevOps… specifically the branch that meant that they needed to test something… this is what you do:

  1. Login into Azure Devops and go to User Setting – Notifications
  2. Click New Subscription, choose Code (TFVC) and Code is checked in
    Note: since this is a Dynamics 365 FO project we are using TFVC 
  3. Set the Path (or other criteria) you want to check for and click finish

    That is all…

Johan

Link
https://docs.microsoft.com/en-us/azure/devops/boards/queries/alerts-and-notifications?view=tfs-2017

Copy database from an Azure Sql Environment to a OneBox environment

Here is a checklist to copy a Dynamics 365 for Finance and operations database in from a tier-2 (or above) to a OneBox (Dev, Build or Test).

  1. Start by creating a new database as a copy of the original (since you are going to mess with it) by running this SQL query:
    CREATE DATABASE MyNewCopy AS COPY OF axdb_mySourceDatabaseToCopy

    Since this operation runs asynchronously in the background you will have to keep an eye on it before continuing:

    SELECT * FROM sys.dm_database_copies
  2. Prepare the database for export
    --Prepare a database in Azure SQL Database for export to SQL Server.
    --Disable change tracking on tables where it is enabled.
    declare
    @SQL varchar(1000)
    set quoted_identifier off
    declare changeTrackingCursor CURSOR for
    select 'ALTER TABLE ' + t.name + ' DISABLE CHANGE_TRACKING'
    from sys.change_tracking_tables c, sys.tables t
    where t.object_id = c.object_id
    OPEN changeTrackingCursor
    FETCH changeTrackingCursor into @SQL
    WHILE @@Fetch_Status = 0
    BEGIN
    exec(@SQL)
    FETCH changeTrackingCursor into @SQL
    END
    CLOSE changeTrackingCursor
    DEALLOCATE changeTrackingCursor
    
    --Disable change tracking on the database itself.
    ALTER DATABASE
    -- SET THE NAME OF YOUR DATABASE BELOW
    MyNewCopy
    set CHANGE_TRACKING = OFF
    --Remove the database level users from the database
    --these will be recreated after importing in SQL Server.
    declare
    @userSQL varchar(1000)
    set quoted_identifier off
    declare userCursor CURSOR for
    select 'DROP USER [' + name + ']'
    from sys.sysusers
    where issqlrole = 0 and hasdbaccess = 1 and name <> 'dbo'
    OPEN userCursor
    FETCH userCursor into @userSQL
    WHILE @@Fetch_Status = 0
    BEGIN
    exec(@userSQL)
    FETCH userCursor into @userSQL
    END
    CLOSE userCursor
    DEALLOCATE userCursor
    --Delete the SYSSQLRESOURCESTATSVIEW view as it has an Azure-specific definition in it.
    --We will run db synch later to recreate the correct view for SQL Server.
    if(1=(select 1 from sys.views where name = 'SYSSQLRESOURCESTATSVIEW'))
    DROP VIEW SYSSQLRESOURCESTATSVIEW
    --Next, set system parameters ready for being a SQL Server Database.
    update sysglobalconfiguration
    set value = 'SQLSERVER'
    where name = 'BACKENDDB'
    update sysglobalconfiguration
    set value = 0
    where name = 'TEMPTABLEINAXDB'
    --Clean up the batch server configuration, server sessions, and printers from the previous environment.
    TRUNCATE TABLE SYSSERVERCONFIG
    TRUNCATE TABLE SYSSERVERSESSIONS
    TRUNCATE TABLE SYSCORPNETPRINTERS
    --Remove records which could lead to accidentally sending an email externally.
    UPDATE SysEmailParameters
    SET SMTPRELAYSERVERNAME = ''
    GO
    UPDATE LogisticsElectronicAddress
    SET LOCATOR = ''
    WHERE Locator LIKE '%@%'
    GO
    TRUNCATE TABLE PrintMgmtSettings
    TRUNCATE TABLE PrintMgmtDocInstance
    --Set any waiting, executing, ready, or canceling batches to withhold.
    UPDATE BatchJob
    SET STATUS = 0
    WHERE STATUS IN (1,2,5,7)
    GO
    -- Clear encrypted hardware profile merchand properties
    update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null

    Remember to change the database namn on line 23

  3. Export the database
    cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin
    
    SqlPackage.exe /a:export /ssn:<server>.database.windows.net /sdn:MyNewCopy /tf:D:\Exportedbacpac\my.bacpac /p:CommandTimeout=1200 /p:VerifyFullTextDocumentTypesSupported=false /sp:<SQLAdmin password> /su:sqladmin

    Note: I usually store the DB backup in an Azure Storage Blog since this is the easiest way to move file between environments. See here

  4. Import the backup in the target environment
    cd C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin
    
    SqlPackage.exe /a:import /sf:D:\Exportedbacpac\my.bacpac /tsn:localhost /tdn:<target database name> /p:CommandTimeout=1200

     

  5. When the database is imported you will need to prepare it for the new environment
    CREATE USER axdeployuser FROM LOGIN axdeployuser
    EXEC sp_addrolemember 'db_owner', 'axdeployuser'
    
    CREATE USER axdbadmin FROM LOGIN axdbadmin
    EXEC sp_addrolemember 'db_owner', 'axdbadmin'
    
    CREATE USER axmrruntimeuser FROM LOGIN axmrruntimeuser
    EXEC sp_addrolemember 'db_datareader', 'axmrruntimeuser'
    EXEC sp_addrolemember 'db_datawriter', 'axmrruntimeuser'
    
    CREATE USER axretaildatasyncuser FROM LOGIN axretaildatasyncuser
    EXEC sp_addrolemember 'DataSyncUsersRole', 'axretaildatasyncuser'
    
    CREATE USER axretailruntimeuser FROM LOGIN axretailruntimeuser
    EXEC sp_addrolemember 'UsersRole', 'axretailruntimeuser'
    EXEC sp_addrolemember 'ReportUsersRole', 'axretailruntimeuser'
    
    CREATE USER axdeployextuser FROM LOGIN axdeployextuser
    EXEC sp_addrolemember 'DeployExtensibilityRole', 'axdeployextuser'
    
    CREATE USER [NT AUTHORITY\NETWORK SERVICE] FROM LOGIN [NT AUTHORITY\NETWORK SERVICE]
    EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE'
    
    UPDATE T1
    SET T1.storageproviderid = 0
        , T1.accessinformation = ''
        , T1.modifiedby = 'Admin'
        , T1.modifieddatetime = getdate()
    FROM docuvalue T1
    WHERE T1.storageproviderid = 1 --Azure storage
    
    ALTER DATABASE [<your AX database name>] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 6 DAYS, AUTO_CLEANUP = ON)
    GO
    DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking
    DROP PROCEDURE IF EXISTS SP_ConfigureTablesForChangeTracking_V2
    GO
    -- Begin Refresh Retail FullText Catalogs
    DECLARE @RFTXNAME NVARCHAR(MAX);
    DECLARE @RFTXSQL NVARCHAR(MAX);
    DECLARE retail_ftx CURSOR FOR
    SELECT OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id) fullname FROM SYS.FULLTEXT_INDEXES
    	WHERE FULLTEXT_CATALOG_ID = (SELECT TOP 1 FULLTEXT_CATALOG_ID FROM SYS.FULLTEXT_CATALOGS WHERE NAME = 'COMMERCEFULLTEXTCATALOG');
    OPEN retail_ftx;
    FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
    
    BEGIN TRY
    	WHILE @@FETCH_STATUS = 0  
    	BEGIN  
    		PRINT 'Refreshing Full Text Index ' + @RFTXNAME;
    		EXEC SP_FULLTEXT_TABLE @RFTXNAME, 'activate';
    		SET @RFTXSQL = 'ALTER FULLTEXT INDEX ON ' + @RFTXNAME + ' START FULL POPULATION';
    		EXEC SP_EXECUTESQL @RFTXSQL;
    		FETCH NEXT FROM retail_ftx INTO @RFTXNAME;
    	END
    END TRY
    BEGIN CATCH
    	PRINT error_message()
    END CATCH
    
    CLOSE retail_ftx;  
    DEALLOCATE retail_ftx; 
    -- End Refresh Retail FullText Catalogs
  6. Switch to using the new database
  7. Stop these services
    World Wide Web Publishing Service
    Management Reporter 2012 Process Service
    Microsoft Dynamics 365 Unified Operations: Batch Management Service
  8. Rename the old database to AxDB_orig
  9. Rename the new database to AxDB
  10. Start these services
    World Wide Web Publishing Service
    Microsoft Dynamics 365 Unified Operations: Batch Management Service
    Management Reporter 2012 Process Service
  11. Synchronize the database from Visual Studio

Links
https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/database/copy-database-from-azure-sql-to-sql-server

 

 

Flow Friday – Adding flagged email to todo list

As you all know Microsoft Flow together with Outlook is able to add tasks when you flag an email. In my workflow I am unfortunately not using Microsoft ToDo… I have put all my tasks in Todoist but I think the feature is awesome… Microsoft flow to the rescue

  1. Lets start with creating the trigger which is flagged email in Outlook

  2. I want the tasks to end up in Todoists Inbox with prio 1… The reason for this is not that all email is important but it is important to triage the inbox in order to set the correct prio, labels and project.

    The expression is for getting todays date and looks like this:

    formatDateTime(utcNow(),’yyyy-MM-dd’)

Downloading Microsoft Ignite Sessions

This year I was not able to visit Microsoft Ignite 2019 but since there are more than 1900 session available for on demand viewing (and I would not have had time to watch the sessions I wanted anyway) that doesn’t really matter. I can always download them and watch them at home. If you hesitate on downloading all of them you can find your sessions/products/speakers of interest on the Ignite site 

To bulk download them you will need a script. I use this one but there are others out there that you can use. For this particular script to work you will need a tool called youtube-dl (which in turn requires Microsoft Visual C++ 2010 Redistributable Package (x86) ) and ffmpeg.exe. both tools will be downloaded by the script. In order to run scripts you download (this is done your own risk… only run scripts you trust) you will also need to set the execution policy in PowerShell

I do it for just the specific window that I use:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

To download the session I use these script lines:

.\Get-EventSession.ps1 -DownloadFolder 'D:\Microsoft Ignite 2019\' -Product "*Finance*" -Event Ignite -NoSlidedecks
.\Get-EventSession.ps1 -DownloadFolder 'D:\Microsoft Ignite 2019\' -Product "Power Platform" -Event Ignite -NoSlidedecks
.\Get-EventSession.ps1 -DownloadFolder 'D:\Microsoft Ignite 2019\' -Speaker "Jeffrey Snover" -Event Ignite -NoSlidedecks
.\Get-EventSession.ps1 -DownloadFolder 'D:\Microsoft Ignite 2019\' -Speaker "Mark Russinovich" -Event Ignite -NoSlidedecks
.\Get-EventSession.ps1 -DownloadFolder 'D:\Microsoft Ignite 2019\' -Product "Not Product Specific" -Event Ignite -NoSlidedecks

There are a lot of other filter possibilities in the script that you can explore… now, get downloading

Johan

Links:
https://gallery.technet.microsoft.com/Ignite-2016-Slidedeck-and-296df316#content

En Liten Podd om IT – Avsnitt 240 – Man har döpt om PowerApps till Power Apps

Om Shownotes ser konstiga ut så finns de på webben här också: https://www.enlitenpoddomit.se/e/en-liten-podd-om-it-avsnitt-240 

Avsnitt 240 spelades in den 10:e november och eftersom igelkottar har egna olympiska spel så handlar dagens avsnitt om:

 

 

FEEDBACK OCH BACKLOG

* Björn är på väg hem från Microsoft Ignite.* Silicon Valley säsong 6 har släppts på HBO. Nytt avsnitt på måndagar. Westworld är på gång.* Vinn en Kingston DT2000.* Vinn en biljett till Truesec Infra Summit.

 

 

MICROSOFT

* Vi pratar jättemycket om Ignite och här följer en länk-kavalkad:

* https://www.macrumors.com/2019/11/04/microsoft-unified-office-mobile-app/

* https://techcrunch.com/2019/11/04/microsoft-teams-gets-yammer-integration-secure-private-channels-and-more/

* https://www.theverge.com/2019/11/4/20947418/microsoft-slack-competition-future-of-work-interview

* https://techcommunity.microsoft.com/t5/Microsoft-Teams-Blog/What-s-New-in-Microsoft-Teams-Ignite-2019/ba-p/937025

https://techcrunch.com/2019/11/04/microsoft-launches-managed-meeting-rooms-as-a-service/

https://www.androidcentral.com/microsoft-office-beta-ios-and-android

https://www.thurrott.com/mobile/221069/microsoft-announces-major-updates-for-outlook-on-apples-platforms

https://www.thurrott.com/cloud/office-365/221340/microsoft-brings-onenote-2016-back-from-the-dead

https://techcrunch.com/2019/11/04/microsoft-launches-power-virtual-agents-its-no-code-bot-builder/

https://techcrunch.com/2019/11/04/microsofts-azure-synapse-analytics-bridges-the-gap-between-data-lakes-and-warehouses/

https://www.zdnet.com/article/microsofts-hybrid-2-0-strategy-azure-arc-azure-stack-hub-azure-stack-edge-explained/

https://techcrunch.com/2019/11/04/you-can-now-try-microsofts-web-based-version-of-visual-studio/

https://www.engadget.com/2019/11/04/microsoft-archived-superman-project-silica/

 

 

APPLE

Räntefri iPhone om du betalar med Apple Card.

* Ny 16″ MBP som är snygg!

* Apple samarbetar med Valve om AR.

 

GOOGLE

Android 10 släppt i Sverige och med det blir Android Auto tillgängligt.* Poängprogram för Google Playstore.* Huaweis trade ban kan komma att släppas.* Google släpper Nest Hub Max.

 

 

ANDRA NYHETER

* Netflix får stöd för att spela upp serier i högre hastighet.* Netflix får filter så att du inte ska bli kränkt.

 

 

EVENT

* Björn är på Radar Summit 2019 (13/11)* David och Mats minglar nog på Truesec Infra Summit (21-22/11)* Björn är på Integration Summit 2019 (27/11 & 28/11)* Microsoft Ignite Tour (5-6/5 2020)

 

 

SHUT UP AND TAKE MY MONEY:

* Mats:

* Björn: Björn vill ha mer batteritid i både dator och telefon.

* David: Lennart.

* Johan: nVidia Shield.

 

 

EGNA LÄNKAR

En Liten Podd Om IT på webben

En Liten Podd Om IT på Facebook

 

 

LÄNKAR TILL VART MAN HITTAR PODDEN FÖR ATT LYSSNA:

Apple Podcaster (iTunes)

Overcast

Acast

Spotify

Stitcher

 

LÄNK TILL DISCORD DÄR MAN HITTAR LIVE STREAM + CHATT

https://discord.gg/gfKnEGQ

 

(Tack för att du har läst hela vägen hit, du får veckans guldstjärna!)

source https://www.enlitenpoddomit.se/e/en-liten-podd-om-it-avsnitt-240/

En Liten Podd om IT – Bonusavsnitt – Intervju med David Bittner

Detta är ett specialavsnitt där David har förmånen att få träffa och intervjua David Bittner från The Cyber Wire.

 

This is a special episode where David had the opportunity to meet and interview David Bittner from The Cyber Wire.

source https://www.enlitenpoddomit.se/e/en-liten-podd-om-it-bonusavsnitt-intervju-med-david-bittner/

Flow Friday – Feeding news to MS Teams – Part 2

So… Apparently Flow is not Flow anymore 🙂 Flow is now called Power Automate but since the actual flows still are called flows I will keep the name Flow Friday…

Last week we startad posting news to Microsoft Teams… today we are expanding that concept… Same basic flow with a nice look and more news sources

Since we are not able to add multiple trigger to a Flow (yet?? *hoping*) and I am too lazy to build multiple flows… that would be cheating.

The multiple news sources requires a workaround using an external service called RSSUnify (there are other services that you can use). Go to RSSUnify and add all your feeds.

Then you copy the resulting RSS URL from RSSUnify and add it to Microsoft Flow

In order to refine the flow even more I want to make the Teams posting a little nicer. To do that I use the action “Post your own adaptive card as the flow bot to a channel (Preview)”. To design the look of the card you can either write your own JSON design or you can use this tool. I created a minimal card and the post information.

The card posting action has issues handling HTML which means that I will have to convert the summary into Plain Text. In order to fix this I add an action called Html to Text and then add the result to the adaptive card.

{
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.0",
    "body": [
        {
            "type": "TextBlock",
            "text": "[@{triggerBody()?['title']}](@{triggerBody()?['primaryLink']})",
            "weight": "Bolder",
            "size": "Medium"
        },
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "TextBlock",
                            "spacing": "None",
                            "text": "@{body('Html_to_text')}",
                            "isSubtle": true,
                            "wrap": true
                        }
                    ]
                }
            ]
        },
        {
            "type": "TextBlock",
            "text": "",
            "wrap": true
        }
    ]
}

The post looks like this:

That is it for this week

Links:
https://adaptivecards.io/
https://rssunify.com/