Initialize bunch of variables in constructor by extracting value from dictionary
You can simplify that portion of code. First, you'll need to create an array that will holds the header keys such as PROC_HEADER ..etc. then you can go from there. 

Here is an example (NOTE, keys are just placeholders in this example, so you know which const needs to be replaced). 

public Tester(IDictionary&lt;string, StringValues&gt; headers)
 {
    // these will be overwritten if their customer global are not null. 
    DbId = GenerateDbId();
    ProcId = GenerateProcId();
    ThetaId = GenerateThetaId();

    if (headers == null) { return; }

    var headerKeys = new[]{
        "PROC_HEADER",
        "DB_HEADER",
        "TEXT_HEADER",
        "ALPHA_HEADER",
        "TIMEOUT_HEADER",
        "FILTER_HEADER",
        "PREVIEW_HEADER",
        "ANT_HEADER",
        "APP_HEADER",
        "PAGE_HEADER",
        "LOCAL_HEADER",
        "CONTEXT_HEADER",   
        "CHANNEL_HEADER"
    };

    foreach(var key in headerKeys)
    {
        headers.TryGetValue(key, out var headerValue);

        if (headerValue.Count &gt; 0)
        {   
            switch(key)
            {
                case "PROC_HEADER":
                    SetHeaderValue(headerValue[0], "ProcIdHeader", "ProcId");
                    break;
                case "DB_HEADER":
                    SetHeaderValue(headerValue[0], "DbIdHeader",  "DbId");  
                    break;      
                case "TEXT_HEADER":
                     int.TryParse(headerValue[0],  var textId);
                     TextIdValue = textId;
                     TextId = textId;               
                    break;              
                case "ALPHA_HEADER":
                    SetHeaderValue(headerValue[0],  "AlphaHeader",  "AlphaContent");
                    break;
                case "TIMEOUT_HEADER":
                    SetHeaderValue(headerValue[0],   "TimeIdHeader",  "TimeId");        
                    break;      
                case "FILTER_HEADER":
                    SetHeaderValue(headerValue[0],   "FilterHeader",  "FilterId");      
                    break;          
                case "PREVIEW_HEADER":
                    SetHeaderValue(headerValue[0],   "PreviewHeader",  "PreviewId");        
                    break;          
                case "ANT_HEADER":
                    SetHeaderValue(headerValue[0],   "AntHeader",  "AntId");    
                    break;      
                case "APP_HEADER":
                    SetHeaderValue(headerValue[0],   "AppHeader",  "AppId");    
                    break;  
                case "PAGE_HEADER":
                    SetHeaderValue(headerValue[0],   "PageHeader",  "PageStr"); 
                    break;   
                case "CHANNEL_HEADER":
                    ChannelId = headerValue[0];     
                    break;  
                case "LOCAL_HEADER":
                    LocalHeader = headerValue[0];
                    LocalStr = DeserializeHeader&lt;LocalStr&gt;(LocalHeader);
                    break;      
                case "CONTEXT_HEADER":
                    ContextHeader = headerValue[0];
                    ContextStr = DeserializeHeader&lt;ContextStr&gt;(ContextHeader);
                    break;                                           
            }       
        }   
    }
}

private T DeserializeHeader&lt;T&gt;(string str) where T : new()
{
    if(!string.IsNullOrEmpty(str))
    {
        try
        {
            return JsonSerializer.Deserialize&lt;T&gt;(str);
        }
        catch (Exception e)
        {
            return new T();
        }
    }

    return default;
}

public void SetHeaderValue(string headerValue, string customerPropertyName, string serverPropertyName)
{
    var custProperty = this.GetType().GetProperty(customerPropertyName);        

    if(custProperty != null) { custProperty.SetValue(this, headerValue); }

    if(!string.IsNullOrWhiteSpace(headerValue))
    {      
        var serverProperty = this.GetType().GetProperty(serverPropertyName);

        if(serverProperty != null) { serverProperty.SetValue(this, headerValue); }                       
    }      

}   


I've decided to use switch to group them up, as it would be more readable, and also it has an a performance advantage over if/else blocks as it would be compiled into jump table which would be faster than if/else blocks.