Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,4 @@ vite.config.js.timestamp-*
vite.config.ts.timestamp-*
src/broadcast-pcf/appmodulepicker/push.bat
export-solution.ps1
/.vs
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,15 @@
# dataverse-broadcast-notification-solution
Open source Dataverse Solution to broadcast notifications on apps
[![CI - Validation](https://github.com/dotnetprog/dataverse-broadcast-notification-solution/actions/workflows/ci-validation.yml/badge.svg)](https://github.com/dotnetprog/dataverse-broadcast-notification-solution/actions/workflows/ci-validation.yml)
[![codecov](https://codecov.io/gh/dotnetprog/dataverse-broadcast-notification-solution/graph/badge.svg?token=AWMUQR2QAT)](https://codecov.io/gh/dotnetprog/dataverse-broadcast-notification-solution)
# 🔔 dataverse-broadcast-notification-solution 📢
Open source Dataverse Solution to display Global Notifications per Model-Driven Apps
Helpful to notify your dataverse end users.

![Broadcast App](docs/assets/imgs/appThumbnail.png "Broadcast App")

## 🎯 Most popular use cases 📂
- 🚧 Notify users system will shutdown for maintenance
- 📣 Any kind of announcements
- ⚠️ Warn/inform users of a known bug

*Documentation in progress...*

Binary file added docs/assets/imgs/appThumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/dangerSample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/infoSample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/manySample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/manySample_Opened.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/successSample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/imgs/warningSample.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<AppModuleComponent type="62" schemaName="fdn_AppNotificationBroadcastsManagement" />
</AppModuleComponents>
<AppModuleRoleMaps>
<Role id="{c691777d-508a-f011-b4cc-6045bdccf7ac}" />
<Role id="{627090ff-40a3-4053-8790-584edc5be201}" />
<Role id="{119f245c-3cc8-4b62-b31c-d1a046ced15d}" />
</AppModuleRoleMaps>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<AppModuleComponent type="62" schemaName="fdn_AppNotificationBroadcastsManagement" />
</AppModuleComponents>
<AppModuleRoleMaps>
<Role id="{c691777d-508a-f011-b4cc-6045bdccf7ac}" />
<Role id="{627090ff-40a3-4053-8790-584edc5be201}" />
<Role id="{119f245c-3cc8-4b62-b31c-d1a046ced15d}" />
</AppModuleRoleMaps>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name LocalizedName="Diffusion d'une notification d'application" OriginalName="Broadcast App Notification">fdn_BroadcastAppNotification</Name>
<Name LocalizedName="Global App Notification" OriginalName="Broadcast App Notification">fdn_BroadcastAppNotification</Name>
<EntityInfo>
<entity Name="fdn_BroadcastAppNotification">
<LocalizedNames>
<LocalizedName description="Diffusion d'une notification d'application" languagecode="1033" />
<LocalizedName description="Diffusion d'une notification d'application" languagecode="1036" />
<LocalizedName description="Global App Notification" languagecode="1033" />
<LocalizedName description="Notification globale des applications" languagecode="1036" />
</LocalizedNames>
<LocalizedCollectionNames>
<LocalizedCollectionName description="Diffusion des notifications d'applications" languagecode="1033" />
<LocalizedCollectionName description="Diffusion des notifications d'applications" languagecode="1036" />
<LocalizedCollectionName description="Global App Notifications" languagecode="1033" />
<LocalizedCollectionName description="Notifications globales des applications" languagecode="1036" />
</LocalizedCollectionNames>
<Descriptions>
<Description description="" languagecode="1033" />
Expand Down
2 changes: 1 addition & 1 deletion src/broadcast-solution/Other/Customizations.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ImportExportXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" OrganizationVersion="9.2.25084.131" OrganizationSchemaType="Standard" CRMServerServiceabilityVersion="9.2.25084.00132">
<ImportExportXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" OrganizationVersion="9.2.25084.131" OrganizationSchemaType="Standard" CRMServerServiceabilityVersion="9.2.25084.00140">
<Entities />
<Roles />
<Workflows />
Expand Down
4 changes: 3 additions & 1 deletion src/broadcast-solution/Other/Solution.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ImportExportXml version="9.2.25084.131" SolutionPackageVersion="9.2" languagecode="1033" generatedBy="CrmLive" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" OrganizationVersion="9.2.25084.131" OrganizationSchemaType="Standard" CRMServerServiceabilityVersion="9.2.25084.00132">
<ImportExportXml version="9.2.25084.131" SolutionPackageVersion="9.2" languagecode="1033" generatedBy="CrmLive" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" OrganizationVersion="9.2.25084.131" OrganizationSchemaType="Standard" CRMServerServiceabilityVersion="9.2.25084.00140">
<SolutionManifest>
<UniqueName>BroadcastAppNotificationsSolution</UniqueName>
<LocalizedNames>
Expand Down Expand Up @@ -80,6 +80,8 @@
<RootComponents>
<RootComponent type="1" schemaName="fdn_broadcastappnotification" behavior="0" />
<RootComponent type="1" schemaName="fdn_localizednotificationcontent" behavior="0" />
<RootComponent type="20" id="{5d47fe9b-518a-f011-b4cc-6045bdccf7ac}" behavior="0" />
<RootComponent type="20" id="{c691777d-508a-f011-b4cc-6045bdccf7ac}" behavior="0" />
<RootComponent type="50" schemaName=":RibbonDiffXml" behavior="0" />
<RootComponent type="61" schemaName="fdn_/images/alertoff.svg" behavior="0" />
<RootComponent type="61" schemaName="fdn_/images/alerton.svg" behavior="0" />
Expand Down
108 changes: 108 additions & 0 deletions src/broadcast-solution/Roles/App Global Notification - Manager.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<Role id="{c691777d-508a-f011-b4cc-6045bdccf7ac}" name="App Global Notification - Manager" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<IsCustomizable>1</IsCustomizable>
<IsAutoAssigned>0</IsAutoAssigned>
<RolePrivileges>
<RolePrivilege name="prvActivateSynchronousWorkflow" level="Basic" />
<RolePrivilege name="prvAppendfdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvAppendfdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvAppendNewProcess" level="Global" />
<RolePrivilege name="prvAppendTeam" level="Global" />
<RolePrivilege name="prvAppendToAsyncOperation" level="Basic" />
<RolePrivilege name="prvAppendTofdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvAppendTofdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvAppendToNewProcess" level="Global" />
<RolePrivilege name="prvAppendToTeam" level="Global" />
<RolePrivilege name="prvAppendToTranslationProcess" level="Global" />
<RolePrivilege name="prvAppendToUser" level="Global" />
<RolePrivilege name="prvAppendToWorkflow" level="Global" />
<RolePrivilege name="prvAppendToWorkflowSession" level="Basic" />
<RolePrivilege name="prvAppendTranslationProcess" level="Global" />
<RolePrivilege name="prvAppendUser" level="Global" />
<RolePrivilege name="prvAppendWorkflow" level="Basic" />
<RolePrivilege name="prvAppendWorkflowSession" level="Basic" />
<RolePrivilege name="prvAssignAsyncOperation" level="Basic" />
<RolePrivilege name="prvAssignfdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvAssignfdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvAssignWorkflow" level="Basic" />
<RolePrivilege name="prvAssignWorkflowSession" level="Basic" />
<RolePrivilege name="prvCreatefdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvCreatefdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvCreateNewProcess" level="Global" />
<RolePrivilege name="prvCreateSharePointData" level="Global" />
<RolePrivilege name="prvCreateTranslationProcess" level="Global" />
<RolePrivilege name="prvCreateUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvCreateUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvCreateWorkflow" level="Basic" />
<RolePrivilege name="prvCreateWorkflowSession" level="Basic" />
<RolePrivilege name="prvDeletefdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvDeletefdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvDeleteNewProcess" level="Global" />
<RolePrivilege name="prvDeleteTranslationProcess" level="Global" />
<RolePrivilege name="prvDeleteUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvDeleteUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvDeleteWorkflow" level="Basic" />
<RolePrivilege name="prvDeleteWorkflowSession" level="Basic" />
<RolePrivilege name="prvFlow" level="Global" />
<RolePrivilege name="prvReadAppConfigMaster" level="Global" />
<RolePrivilege name="prvReadAppModule" level="Global" />
<RolePrivilege name="prvReadAsyncOperation" level="Basic" />
<RolePrivilege name="prvReadAttribute" level="Global" />
<RolePrivilege name="prvReadAttributeMap" level="Global" />
<RolePrivilege name="prvReadBusinessUnit" level="Global" />
<RolePrivilege name="prvReadComplexControl" level="Global" />
<RolePrivilege name="prvReadCustomization" level="Global" />
<RolePrivilege name="prvReadEntity" level="Global" />
<RolePrivilege name="prvReadEntityKey" level="Global" />
<RolePrivilege name="prvReadEntityMap" level="Global" />
<RolePrivilege name="prvReadfdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvReadfdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvReadHierarchyRule" level="Global" />
<RolePrivilege name="prvReadNewProcess" level="Global" />
<RolePrivilege name="prvReadOptionSet" level="Global" />
<RolePrivilege name="prvReadOrganization" level="Global" />
<RolePrivilege name="prvReadPluginAssembly" level="Global" />
<RolePrivilege name="prvReadPluginTraceLog" level="Global" />
<RolePrivilege name="prvReadPluginType" level="Global" />
<RolePrivilege name="prvReadQuery" level="Global" />
<RolePrivilege name="prvReadRelationship" level="Global" />
<RolePrivilege name="prvReadReport" level="Basic" />
<RolePrivilege name="prvReadRole" level="Global" />
<RolePrivilege name="prvReadSavedQueryVisualizations" level="Global" />
<RolePrivilege name="prvReadSdkMessage" level="Global" />
<RolePrivilege name="prvReadSdkMessageProcessingStep" level="Global" />
<RolePrivilege name="prvReadSdkMessageProcessingStepImage" level="Global" />
<RolePrivilege name="prvReadSharePointData" level="Global" />
<RolePrivilege name="prvReadSharePointDocument" level="Global" />
<RolePrivilege name="prvReadSystemApplicationMetadata" level="Global" />
<RolePrivilege name="prvReadSystemForm" level="Global" />
<RolePrivilege name="prvReadTeam" level="Global" />
<RolePrivilege name="prvReadTraceLog" level="Global" />
<RolePrivilege name="prvReadTransactionCurrency" level="Global" />
<RolePrivilege name="prvReadTranslationProcess" level="Global" />
<RolePrivilege name="prvReadUser" level="Global" />
<RolePrivilege name="prvReadUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvReadUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvReadUserQuery" level="Basic" />
<RolePrivilege name="prvReadUserSettings" level="Global" />
<RolePrivilege name="prvReadWebResource" level="Global" />
<RolePrivilege name="prvReadWorkflow" level="Global" />
<RolePrivilege name="prvReadWorkflowSession" level="Global" />
<RolePrivilege name="prvSharefdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvSharefdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvShareUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvShareWorkflow" level="Basic" />
<RolePrivilege name="prvShareWorkflowSession" level="Basic" />
<RolePrivilege name="prvWorkflowExecution" level="Global" />
<RolePrivilege name="prvWriteAsyncOperation" level="Basic" />
<RolePrivilege name="prvWritefdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvWritefdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvWriteNewProcess" level="Global" />
<RolePrivilege name="prvWriteSharePointData" level="Global" />
<RolePrivilege name="prvWriteTranslationProcess" level="Global" />
<RolePrivilege name="prvWriteUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvWriteUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvWriteWorkflow" level="Basic" />
<RolePrivilege name="prvWriteWorkflowSession" level="Basic" />
</RolePrivileges>
</Role>
90 changes: 90 additions & 0 deletions src/broadcast-solution/Roles/App Global Notification - Reader.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<Role id="{5d47fe9b-518a-f011-b4cc-6045bdccf7ac}" name="App Global Notification - Reader" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<IsCustomizable>1</IsCustomizable>
<IsAutoAssigned>0</IsAutoAssigned>
<RolePrivileges>
<RolePrivilege name="prvActivateSynchronousWorkflow" level="Basic" />
<RolePrivilege name="prvAppendNewProcess" level="Global" />
<RolePrivilege name="prvAppendToAsyncOperation" level="Basic" />
<RolePrivilege name="prvAppendToNewProcess" level="Global" />
<RolePrivilege name="prvAppendToTranslationProcess" level="Global" />
<RolePrivilege name="prvAppendToWorkflow" level="Global" />
<RolePrivilege name="prvAppendToWorkflowSession" level="Basic" />
<RolePrivilege name="prvAppendTranslationProcess" level="Global" />
<RolePrivilege name="prvAppendWorkflow" level="Basic" />
<RolePrivilege name="prvAppendWorkflowSession" level="Basic" />
<RolePrivilege name="prvAssignAsyncOperation" level="Basic" />
<RolePrivilege name="prvAssignWorkflow" level="Basic" />
<RolePrivilege name="prvAssignWorkflowSession" level="Basic" />
<RolePrivilege name="prvCreateNewProcess" level="Global" />
<RolePrivilege name="prvCreateSharePointData" level="Global" />
<RolePrivilege name="prvCreateTranslationProcess" level="Global" />
<RolePrivilege name="prvCreateUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvCreateUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvCreateWorkflow" level="Basic" />
<RolePrivilege name="prvCreateWorkflowSession" level="Basic" />
<RolePrivilege name="prvDeleteNewProcess" level="Global" />
<RolePrivilege name="prvDeleteTranslationProcess" level="Global" />
<RolePrivilege name="prvDeleteUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvDeleteUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvDeleteWorkflow" level="Basic" />
<RolePrivilege name="prvDeleteWorkflowSession" level="Basic" />
<RolePrivilege name="prvFlow" level="Global" />
<RolePrivilege name="prvReadAppConfigMaster" level="Global" />
<RolePrivilege name="prvReadAppModule" level="Global" />
<RolePrivilege name="prvReadAsyncOperation" level="Basic" />
<RolePrivilege name="prvReadAttribute" level="Global" />
<RolePrivilege name="prvReadAttributeMap" level="Global" />
<RolePrivilege name="prvReadBusinessUnit" level="Global" />
<RolePrivilege name="prvReadComplexControl" level="Global" />
<RolePrivilege name="prvReadCustomization" level="Global" />
<RolePrivilege name="prvReadEntity" level="Global" />
<RolePrivilege name="prvReadEntityKey" level="Global" />
<RolePrivilege name="prvReadEntityMap" level="Global" />
<RolePrivilege name="prvReadfdn_BroadcastAppNotification" level="Global" />
<RolePrivilege name="prvReadfdn_LocalizedNotificationContent" level="Global" />
<RolePrivilege name="prvReadHierarchyRule" level="Global" />
<RolePrivilege name="prvReadNewProcess" level="Global" />
<RolePrivilege name="prvReadOptionSet" level="Global" />
<RolePrivilege name="prvReadOrganization" level="Global" />
<RolePrivilege name="prvReadPluginAssembly" level="Global" />
<RolePrivilege name="prvReadPluginTraceLog" level="Global" />
<RolePrivilege name="prvReadPluginType" level="Global" />
<RolePrivilege name="prvReadQuery" level="Global" />
<RolePrivilege name="prvReadRelationship" level="Global" />
<RolePrivilege name="prvReadReport" level="Basic" />
<RolePrivilege name="prvReadRole" level="Global" />
<RolePrivilege name="prvReadSavedQueryVisualizations" level="Global" />
<RolePrivilege name="prvReadSdkMessage" level="Global" />
<RolePrivilege name="prvReadSdkMessageProcessingStep" level="Global" />
<RolePrivilege name="prvReadSdkMessageProcessingStepImage" level="Global" />
<RolePrivilege name="prvReadSharePointData" level="Global" />
<RolePrivilege name="prvReadSharePointDocument" level="Global" />
<RolePrivilege name="prvReadSystemApplicationMetadata" level="Global" />
<RolePrivilege name="prvReadSystemForm" level="Global" />
<RolePrivilege name="prvReadTeam" level="Global" />
<RolePrivilege name="prvReadTraceLog" level="Global" />
<RolePrivilege name="prvReadTransactionCurrency" level="Global" />
<RolePrivilege name="prvReadTranslationProcess" level="Global" />
<RolePrivilege name="prvReadUser" level="Global" />
<RolePrivilege name="prvReadUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvReadUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvReadUserQuery" level="Basic" />
<RolePrivilege name="prvReadUserSettings" level="Global" />
<RolePrivilege name="prvReadWebResource" level="Global" />
<RolePrivilege name="prvReadWorkflow" level="Global" />
<RolePrivilege name="prvReadWorkflowSession" level="Global" />
<RolePrivilege name="prvShareUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvShareWorkflow" level="Basic" />
<RolePrivilege name="prvShareWorkflowSession" level="Basic" />
<RolePrivilege name="prvWorkflowExecution" level="Global" />
<RolePrivilege name="prvWriteAsyncOperation" level="Basic" />
<RolePrivilege name="prvWriteNewProcess" level="Global" />
<RolePrivilege name="prvWriteSharePointData" level="Global" />
<RolePrivilege name="prvWriteTranslationProcess" level="Global" />
<RolePrivilege name="prvWriteUserApplicationMetadata" level="Basic" />
<RolePrivilege name="prvWriteUserEntityUISettings" level="Basic" />
<RolePrivilege name="prvWriteWorkflow" level="Basic" />
<RolePrivilege name="prvWriteWorkflowSession" level="Basic" />
</RolePrivileges>
</Role>
Loading