<\documentclass[parskip=half]{scrartcl}
\usepackage[german]{babel}
\usepackage{xsim}
\DeclareExerciseTranslations{exercise}{
German= Aufgabe,
}
\DeclareExerciseTranslations{exercises}{
German= Aufgaben,
}
\DeclareExerciseTranslations{points}{
German= P. ,
}
\DeclareExerciseProperty{subpoints}
\newcommand*\thesubpoints{}
\newcounter{subexercise}[exercise]
\renewcommand\thesubexercise{\alph{subexercise})}
\NewDocumentCommand\question{O{}}{%
\refstepcounter{subexercise}%
\item[\thesubexercise]%
\XSIMifblankF{#1}{%
\xdef\thesubpoints{\thesubpoints\XSIMifblankF{\thesubpoints}{+}#1}%
(\addpoints{#1})%
}%
}
\DeclareExerciseEnvironmentTemplate{custom}{%
\gdef\thesubpoints{}%
\subsection*{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
\IfExercisePropertySetT{subtitle}
{ {\normalfont\itshape\GetExerciseProperty{subtitle}}}%
}
\GetExercisePropertyT{points}{%
\begingroup
\footnotesize\sffamily
Points: \printgoal{\PropertyValue}%
\IfExercisePropertySetT{subpoints}{ (\GetExerciseProperty{subpoints})}%
\endgroup
\par
}
}{