OK, you need to change the UsersBO.vb file within the MicroFour StrataFrame Security.sln solution. There is a method within the UsersBO.vb file called VerifyMinPasswordAge() that is causing all of your frustrations. It needs to be changed to this:
Private Sub VerifyMinPasswordAge(ByVal Preferences As SFSPreferencesBO)
'-- Bail if the password has not changed
If Not Me.PasswordIsChanged() Then
Exit Sub
End If
'-- Bail if the user is configured to "must change password at next login"
If Me.us_UserMustChangePwNextLogin Then
Exit Sub
End If
'-- Verify password minimum age
If Me.CurrentRow.HasVersion(DataRowVersion.Original) Then
Dim loTemp As EncryptedData = Me._Data
Dim lcMsg As String
If DateTime.Now.Subtract(loTemp.PasswordCreatedOn) < New TimeSpan(Preferences.sp_PwMinAge) Then
lcMsg = String.Format(RetrieveTextValue("SFST_MustWaitBeforePasswordChange"), Data.Formatting.TimeSpanToString(New TimeSpan(Preferences.sp_PwMinAge)))
Me.AddBrokenRule("us_PasswordPlainText", lcMsg)
End If
End If
End Sub
The thing we changed is the second if test to exit if the user has the UserMustChangePwNextLogin flag set. So, it won't add a broken rule for the password age if the user is being forced to change their password.