Implementing a Noah Mobile Configuration Dialog



HIMSA has created and shared the following dialog as an external component. You can use this dialog as is to provide your users with the ability to configure and enable/disable Noah Mobile. 



IMPORTANT: Due to the GDPR implementation in Noah 4.9, HIMSA has discovered additional dependencies that must be included in order to implement the Noah Mobile Configuration window that resides inside NoahExternalComponents.dll. It is necessary to extract the following three dlls from the %ProgramFiles(x86)%\Himsa\Noah 4\ folder of the Noah installation and place them with your exe and NoahExternalComponents:

  • MouseKeyboardActivityMonitor.dll 3.0.1.21726

  • MoonPdfLib.dll 0.3.0.0

  • libmupdf.dll 2.2.1.0

For examples on how the dialog can be implemented in your business system, please refer to the Sample Business System


Developing your own user dialogue for enable/Disable Noah Mobile

You can also choose to implement your own Noah Mobile configuration dialog using the following new functions in the BusinessAPI:

/// PutMobileAppPermissions inserts/updates the permissions for a given app identified by a module ID.
public void PutMobileAppPermissions(int ModuleID, int[] PermissionIDs)
/// Retrieves the permissions for a given app identified by module ID
public int[] GetMobileAppPermissions(int ModuleID)
/// Deletes the given app permissions for a given modules id
public void DelMobileAppPermissions(int ModuleID, int[] PermissionIDs)
/// Convert an array of permission IDs to an array of AppPermision
public AppPermission[] ConvertPermissionIdsToAppPermissions(int[] permissionIDs)
/// Converts an array of AppPermission to an array of permission ids
public int[] ConvertAppPermissionsToPermissionIDs(AppPermission[] appPermissions)
/// PutAppPermissions inserts/updates permissions in the permission table. If PermissionID in the AppPermission class
/// is 0 a new permission is created else an existing permission is updated.
public void PutAppPermissions(AppPermission[] appPermissions)
/// Retrieves all the defined app permissions.
public AppPermission[] GetAppPermissions()
/// Deletes the permissions.
public void DelAppPermissions(AppPermission[] appPermissions)
/// Set the accept state for a number of Mobile Apps
public void PutAppAcceptStates(AppAcceptState[] appAcceptStates)
/// If true, the host name is available (not assigned to this, or any other host).
public bool IsHostNameAvailable(string hostName)
/// Assign the host name to this host. One host can have multiple host names.
public void AddNameToRemoteHost(string hostName)
/// Delete the host name for this host. One host can have multiple host names.
public void DeleteNameForRemoteHost(string hostName)
/// Get the all of the host names for this host. One host can have multiple host names.
public IEnumerable<string> GetNamesForRemoteHost()
/// Transfer the host name from the previous host (associated with the ownership key) the to the current host.
public IEnumerable<string> ClaimRemoteHostNames(string ownershipKey)
/// Change the email address.
public void ChangeEmail(string email)

/// NOT COMPATIBLE: This method is not compatible with this version of Noah it's pre Noah 4.9.
public void PutMobileCnf(MobileCnf Cnf)

/// Use this to setup Noah Mobile. Noah Mobile Configuration (MobileCnf) is moved to there. Alternative is to use NoahExternalComponents which contains a ready made Configuration
/// window. If you choose that solution remember to extract the following three dlls from the %ProgramFiles(x86)%\Himsa\Noah 4\ folder of the Noah installation and place them with
/// your exe and NoahExternalComponents. MouseKeyboardActivityMonitor.dll 3.0.1.21726, MoonPdfLib.dll 0.3.0.0, libmupdf.dll 2.2.1.0

public Provision ProvisionCreate()

/// This Class encapsulate the setup of Noah Mobile
/// To Provision do the following :
/// Get Property MobileCnf that returns a MobileCnf object.
/// Call GetDataProcessingAgreement ít retuns a object that contains a PDF document to be accepted by the user.
/// Title, Name, Company and Email must be filled in by the user before calling PutDataProcessingAgreement.
/// Put Property MobileCnf with the data filled in.
/// Then to save on the server call Submit.
public class Provision

/// <summary>
/// Get latest Data Processing Agreement for the user to accept, in the current Noah Language for the CountryLCID set in the parameter, in order to be able to use NoahMobile.
/// If the user doesn't accept it NoahMobile can't be enabled over the internet.
/// <param name="CountryLCID">The LCID of the country whos Data Processing Agreement is to be returned.</param>
/// </summary>
public DataProcessingAgreement GetAgreement(int CountryLCID)

/// <summary>
/// Accept the latest Data Processing Agreement, in the current Noah Language. This must be done in order to be able to use NoahMobile.
/// If the user doesn't accept it NoahMobile can't be enabled over the internet.
/// Usage: Call GetAgreement populate Email, Title, Company, and Name and Call PutAgreement.
/// <param name="agreement">The agreement that is accepted.</param>
/// </summary>
public void PutAgreement(DataProcessingAgreement agreement)
/// <summary>
/// This method stores the information on the server.
/// </summary>
public void Submit()




To understand the workings of the above methods, we recommend that you open the Sample Business System and then place breakpoints in each and every method in the “ConfigurationService” class (derived from INoahMobileConfigurationService) and the “NoahMobileConfigWindow” class (derived from Window).  Please note when, why with and  which parameters the methods call.