When the DMZ server for Forms Portal was set up, a self-signed certificate was used for the LFDS authentication between it and the internal LFDS server. That certificate expired, which prevented logging into the DMZ Forms server.
I tried fixing it by following this to update the configuration with a new certificate:
That did not fix the login issue, but it broke something else. Now anyone filling out a form on the DMZ server sees that their form was submitted, but there is zero record of it on the internal Forms server. Every form submitted since yesterday is just non-existent.
The event viewer error that seems to happen anytime a form is submitted:
Could not connect to the Laserfiche Routing Service. The service is not running. [LFF501-RoutingEngineDown] Details: URL: Error: RoutingEngineDown Date: 12/20/2019 11:31:55 AM (Pacific Standard Time) HTTP Status Code: 500 Business Process ID: 0 Business Process Name: Stack Trace: Caught exception: Laserfiche.Forms.CommonUtils.Exceptions.LFFormsException Message: Could not connect to the Laserfiche Routing Service. The service is not running. [LFF501-RoutingEngineDown] at FormsModel.SharedContracts.RoutingEngineServiceProxy.GetProxy() at FormsModel.SharedContracts.RoutingEngineServiceProxy.TriggerRouting(RoutingRequestParameters requestParameters, Boolean isSync, Int32 retryCnt) at E_Forms.Models.ViewModels.Form.Submit.ProcessRouting(RoutingRequestParameters req) at Laserfiche.Forms.CommonUtils.FormsTaskFactory.<>c__DisplayClass6_0`1.<StartNew>b__0() Inner exception: System.TypeInitializationException Message: The type initializer for 'FormsModel.SharedContracts.ServiceProxyBase`1' threw an exception. at FormsModel.SharedContracts.ServiceProxyBase`1.GetProxy(Int32 hours, Int32 minutes, Int32 seconds) at FormsModel.SharedContracts.RoutingEngineServiceProxy.GetProxy() Inner exception: System.Configuration.ConfigurationErrorsException Message: The value of the property 'address' cannot be parsed. The error is: Invalid URI: The hostname could not be parsed. (C:\Program Files\Laserfiche\Laserfiche Forms\Forms\web.config line 315) at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult) at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSection(String configKey) at System.ServiceModel.Activation.HostedAspNetEnvironment.UnsafeGetSectionFromWebConfigurationManager(String sectionPath, String virtualPath) at System.ServiceModel.Configuration.ConfigurationHelpers.UnsafeGetAssociatedSection(ContextInformation evalContext, String sectionPath) at System.ServiceModel.Description.ConfigLoader.LookupChannel(ContextInformation configurationContext, String configurationName, ContractDescription contract, EndpointAddress address, Boolean wildcard, Boolean useChannelElementKind, ServiceEndpoint& serviceEndpoint) at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address) at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress) at FormsModel.SharedContracts.ServiceProxyBase`1..cctor()