diff --git a/.changeset/tricky-adults-laugh.md b/.changeset/tricky-adults-laugh.md
new file mode 100644
index 0000000000..4c34ff0d0e
--- /dev/null
+++ b/.changeset/tricky-adults-laugh.md
@@ -0,0 +1,5 @@
+---
+"@comet/cms-admin": minor
+---
+
+Make all DAM license fields optional if `LicenseType` is `ROYALTY_FREE` even if `requireLicense` is true in `DamConfig`
diff --git a/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx b/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx
index dfc9ed4b5a..c2f7c8deb0 100644
--- a/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx
+++ b/packages/admin/cms-admin/src/dam/FileForm/EditFile.tsx
@@ -195,7 +195,6 @@ const EditFileInner = ({ file, id }: EditFileInnerProps) => {
// override default onAfterSubmit because default is stackApi.goBack()
// https://github.com/vivid-planet/comet/blob/master/packages/admin/src/FinalForm.tsx#L53
}}
- validateOnBlur
>
{({ pristine, hasValidationErrors, submitting, handleSubmit }) => (
<>
diff --git a/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx b/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx
index 08c21addcf..ebdd5c71f7 100644
--- a/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx
+++ b/packages/admin/cms-admin/src/dam/FileForm/FileSettingsFields.tsx
@@ -59,6 +59,18 @@ export const FileSettingsFields = ({ isImage, folderId }: SettingsFormProps): Re
[apollo, folderId, scope],
);
+ const requiredValidator = React.useCallback(
+ (value: unknown, allValues: object) => {
+ const type = (allValues as EditFileFormValues).license?.type;
+ const isRequired = type === "ROYALTY_FREE" ? false : damConfig.requireLicense;
+
+ if (isRequired && !value) {
+ return